从表B中获取数据不存在

时间:2013-12-16 03:06:49

标签: mysql sql

嗨,大家好我正在研究一个问题。我有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')

2 个答案:

答案 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转到文档,找到有关加入,左连接和右连接的更多信息......