我正在尝试显示Table_A中的所有数据,并且只显示表格右侧的Table_B匹配位置。我有2个这样的表: TABLE_A:
ID FAC_ID QUESTION ACTION_ITEM
1 222 what? do...
5 245 when? make..
9 325 vcc kjy
11 145 kne juy
表-B:
ID FAC_ID QUESTION ACTION
5 245 when? make..
当我运行我的sql语句时,我想显示如下内容:
ID FAC_ID QUESTION ACTION_ITEM
1 what? do...
5 245 when? make..
9 vcc kjy
11 kne juy
但是使用我的代码,它只显示ID = 5的一行数据。这是我的代码:
select A.ID, B.FAC_ID, A.QUESTION, A.ACTION_ITEM
FROM TABLE_A A LEFT JOIN
TABLE_B B ON A.ID=B.ID
WHERE FAC_ID = 245
答案 0 :(得分:1)
您正在WHERE子句中引用表B中的列。将其移至JOIN。
实际上,您发布的示例甚至不会编译,因为FAC_ID不明确。
答案 1 :(得分:0)
您的查询没有任何意义 - 您的where子句会根据您的数据将其限制为一行,其中ID = 5.
我想你可能需要:
SELECT A.ID, B.FAC_ID, A.QUESTION, A.ACTION_ITEM
FROM TABLE_A A
LEFT OUTER JOIN TABLE_B B
ON A.ID=B.ID
如果您对ID = 5进行过滤(假设FAC_ID = 5是您问题中的拼写错误),则只会获得一行。
答案 2 :(得分:0)
将其转变为内部联接的位置
select A.ID, B.FAC_ID, A.QUESTION, A.ACTION_ITEM
FROM TABLE_A A
LEFT JOIN TABLE_B B
ON A.ID = B.ID
AND B.FAC_ID = 245
WHERE和B.FAC_ID = 245消除任何B.FAC_ID为空并基本上将其转换为内在连接