我认为更容易解释一个例子。所以这是我的桌子
Table A
id | Name
1 | row1
2 | row2
3 | row3
Table B
id | A_id | date
1 | 1 | NULL
2 | 1 | NULL
3 | 2 | 2016-04-01
4 | 2 | 2016-04-01
5 | 3 | 2016-04-01
6 | 3 | NULL
我想要完成的是我在表A上的选择只会返回值,如果与表A相关的表B上的行具有空日期,至少有一个。
Select * from Table_A Where (?)
这是否可以使用?我只会得到row1和row3,可以吗?
答案 0 :(得分:2)
您可以使用EXISTS
:
SELECT *
FROM TableA a
WHERE EXISTS(
SELECT 1
FROM TableB b
WHERE
b.A_id = a.id
AND b.date IS NULL
)
答案 1 :(得分:0)
SELECT *
FROM TableA a
WHERE ID IN (SELECT ID_A
FROM TableB
WHERE date IS NULL
)
子查询会在空日期上检索ID,而这些ID又会传递给主查询以获得您想要的内容