Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询仅在表不为空时执行联接_Sql_Join - Fatal编程技术网

SQL查询仅在表不为空时执行联接

SQL查询仅在表不为空时执行联接,sql,join,Sql,Join,我想要实现的是,我有一个表a和表B,它们都使用相同的ID,但a中的一些ID在B中不存在,因此,如果我正在寻找特定的ID并有一个连接,我不会得到任何东西 我的问题是这样的 SELECT * FROM table_A A LEFT JOIN table_B B ON A.id = B.id WHERE B.condition <> "X" AND A.id = "Y" 选择* 从表A 左联接

我想要实现的是,我有一个表a和表B,它们都使用相同的ID,但a中的一些ID在B中不存在,因此,如果我正在寻找特定的ID并有一个连接,我不会得到任何东西

我的问题是这样的

        SELECT *
        FROM table_A A
        LEFT JOIN table_B B
        ON A.id = B.id
        WHERE B.condition <> "X"
        AND A.id = "Y"
选择*
从表A
左联接表
在A.id=B.id上
其中B.条件“X”
和A.id=“Y”

如果我选择了A和B中都存在的and ID,它就可以工作,但如果它只存在于A中,它就不能工作,那么即使行不在表B中,我如何才能得到结果呢?

将表B条件移动到
ON
子句中,以获得
左连接
结果,而不是
内部连接
结果

SELECT *
FROM table_A A
LEFT JOIN table_B B
  ON A.id = B.id
 AND B.condition <> "X"
WHERE A.id = "Y"
选择*
从表A
左联接表
在A.id=B.id上
和B.条件“X”
其中A.id=“Y”

另请注意:在SQL中,字符串文字应该用单引号括起来(例如,
'Y'
)。谢谢,这正是我所需要的。