我有一个SOME_ABLE表,其中包含SOME_ID列。 我也有表ANOTHER_TABLE,列SOME_TABLE_SOME_ID(FOREIGN KEY),TYPE,CONTENT
对于SOME_TABLE中的一条记录,ANOTHER_TABLE中有1或2条记录。
我希望看到以下内容:
SOME_ID, CONTENT_TYPE_A, CONTENT_TYPE_B
我有sql语句:
SELECT
ST.SOME_ID,
TYPE_A.CONTENT CONTENT_TYPE_A,
TYPE_B.CONTENT CONTENT_TYPE_B
FROM SOME_TABLE ST
LEFT OUTER JOIN ANOTHER_TABLE TYPE_A
ON ST.SOME_ID=TYPE_A.SOME_TABLE_SOME_ID
LEFT OUTER JOIN ANOTHER_TABLE TYPE_B
ON ST.SOME_ID=TYPE_B.SOME_TABLE_SOME_ID
WHERE
TYPE_A.TYPE = 'A'
AND
TYPE_B.TYPE = 'B'
如果ANOTHER_TABLE中的两个记录都存在(TYPE ='A'和TYPE ='B'),则此查询仅返回SOME_TABLE的结果。
如何查看对应的SOME_TABLE记录何时只存在ANOTHER_TABLE中的1条记录?
我想在现有记录时在CONTENT_TYPE_A或CONTENT_TYPE_B中设置空值。
答案 0 :(得分:2)
如何使用OR
代替AND
:
SELECT
ST.SOME_ID,
TYPE_A.CONTENT CONTENT_TYPE_A,
TYPE_B.CONTENT CONTENT_TYPE_B
FROM SOME_TABLE ST
LEFT OUTER JOIN ANOTHER_TABLE TYPE_A
ON ST.SOME_ID=TYPE_A.SOME_TABLE_SOME_ID
LEFT OUTER JOIN ANOTHER_TABLE TYPE_B
ON ST.SOME_ID=TYPE_B.SOME_TABLE_SOME_ID
WHERE
TYPE_A.TYPE = 'A'
OR
TYPE_B.TYPE = 'B'