嗨,大家好我正在研究一个问题。我有2个表,表a包含用户列表表b包含他们的“时钟输入”列表,此刻我从表b中选择不同的日期然后为每个日期,我检查用户是否已检入该表日期。但是我想要做的是从表B中选择一些数据..但是当我尝试时,我只是用表B中的所有数据发送垃圾邮件。这是我的陈述。
SELECT *
FROM Table A,
Table B
WHERE EXISTS (SELECT *
FROM Table B
WHERE Table B.user_id = Table A.id
And Table B.date = 'given date here')
答案 0 :(得分:0)
我仍然不明白你为什么要选择那些不存在的数据,但是如果你仍然需要,那么我会把你的模式作为 -
USER
-----------------
user_id
username
...
...
USER_CLOCKIN
-----------------
user_id
clockin_datetime
...
...
我会将其视为 -
SELECT u.*, uc.*
FROM user u LEFT OUTER JOIN user_clockin uc
ON u.user_id = uc.user_id
WHERE uc.user_id IS NULL
;
这将选择两个表中的所有列。根据您的要求修改您的SELECT
列表。
答案 1 :(得分:0)
尝试运行以下内容:
SELECT table_a.name,table_b.date FROM table_a LEFT JOIN table_b ON table_a.id=table_b.id WHERE table_b.date=<xx.yy.zzzz>
当然要将xx.yy.zzzz替换为需要的日期。另外,访问http://www.mysql.org转到文档,找到有关加入,左连接和右连接的更多信息......