我有 2 个表(下面的示例)
aTable
-------------------------------------------------
name | datein | dateout
test | 2016-10-10 00:00:00 | null --->> This one
test2 | 2016-10-12 00:00:00 | null
-------------------------------------------------
bTable
------------------------------------------------------------
name | datein | dateout
test | 2016-05-05 00:00:00 | 2016-06-06 00:00:00
test | 2016-10-10 00:00:00 | null --->> This one
test2 | 2016-10-12 00:00:00 | 2016-10-13 00:00:00
------------------------------------------------------------
我想提取name
、datein
equal 和dateout
都为 的数据空
我正在使用下面的查询,但得到的响应是空的。
SELECT name,datein
FROM aTable
WHERE (name = 'test' AND dateout IS NULL) AND
(SELECT name FROM bTable WHERE name = 'test' AND dateout IS NULL)
我有什么遗漏的地方吗?
最佳答案
您需要将 EXISTS
添加到您的查询中:
SELECT t1.name, t1.datein
FROM aTable AS t1
WHERE (t1.name = 'test' AND t1.dateout IS NULL) AND
EXISTS(SELECT name
FROM bTable AS t2
WHERE t2.name = 'test' AND
t2.datein = t1.datein AND
t2.dateout IS NULL)
或者,不为 name
字段提供特定值:
SELECT t1.name, t1.datein
FROM aTable AS t1
WHERE t1.dateout IS NULL AND
EXISTS(SELECT name
FROM bTable AS t2
WHERE t2.name = t1.name AND
t2.datein = t1.datein AND
t2.dateout IS NULL)
关于MySQL "AND"语句问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40343291/