mysql - Mysql中如何通过比较两个表返回记录,即使其中一个表为空或为空值?

标签 mysql

我有两个表,即X和Y。我必须通过比较X.id的id(不等于Y.id)来获取X表的记录? 当“Y 表”有与“X”匹配的记录时,它工作正常。如果 Y 表中没有记录(即空或空值),则 X 也返回 null...

我该如何处理这个 null 并获取 X 表记录?

SELECT X.id,
       X.company_Id 
FROM X,Y 
WHERE X.status_Id = 9 
AND X.active=1 
AND X.company_Id IN (SELECT Company_Id 
                     FROM Z
                     WHERE user_Id =1 
                     AND association_Id=1) 
AND X.id <> Y.id

请帮我找到解决方案。

最佳答案

SELECT
    X.id,
    X.company_Id
FROM
    x
    LEFT JOIN y   /*<<<<<<<<<<<*/
WHERE
    X.status_Id = 9
    AND X.active = 1
    AND X.company_Id IN (
        SELECT
            Company_Id
        FROM
            Z
        WHERE
            user_Id = 1
        AND
            association_Id = 1)
    AND X.id <> Y.id

通过使用左连接,您可以获得 X 中的所有行,甚至包括 x.id 与 Y.id 不匹配的行,然后 where 子句消除 X.id = Y.id 的行

关于mysql - Mysql中如何通过比较两个表返回记录,即使其中一个表为空或为空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31116499/

相关文章:

java - 错误消息 "com.mysql.cj.exceptions.WrongArgumentException: The database URL cannot be null."是什么意思?

php - 如何同时使用xampp和mysql服务器

mysql - 如何使用批处理文件对 agilefant(我的 sql 数据库)进行数据库备份

sql - 数据库行为 HAVING-SUM vs WHERE/DISTINCT vs GROUP BY

mysql - 如何在派生表概念中转换此查询

php - 从多个具有限制的多对多关系表中检索结果

java - java中的PATH和CLASSPATH变量

php - 跨不同行的 MySql 语句

mysql - 选择性更新mysql

mysql - 需要一条SQL语句