如何从另一个存在或不存在的表的条件中获取数据库中的数据

时间:2015-09-20 12:21:57

标签: mysql sql join

我有users这样的表

id   |   name    |     password     |      email
1        saeid         *****              asd@asd.com

我有另一张名为appointments

的表格
id   |   created_by    |     due_date     |     notification_send
1              1              *****                    0

我想让users表格中的所有用户在<{1}}表格中显示至少创建一个约会(在appointments表中显示约会表)。

我已尝试过以下代码,但失败了:

created_by

但显然它不起作用。

3 个答案:

答案 0 :(得分:3)

一种方法是使用exists谓词:

SELECT * FROM users u
WHERE EXISTS (SELECT 1 FROM appointments a WHERE a.created_by = u.id)

或者您可以使用inner join,但exists查询在我看来更符合您的问题(即如果您只需要users表中的数据)。

left join表示要获取users中的所有行,无论它们是否在appointments中有匹配的行,而不是您想要的行。

答案 1 :(得分:1)

您正在搜索表格之间的匹配,因此我建议您执行INNER JOIN,如下所示

SELECT * FROM users u
JOIN appointments a ON u.id = a.created_by

一旦我认为这是一个错字或一个大错误,请检查您的ON条款。您正在从users表中选择,然后选择persons.id ??

ON persons.id = a.created_by

答案 2 :(得分:1)

尝试这样的事情:

http://sqlfiddle.com/#!9/5eba3/2

    select * from users c where (select count(*) from appointments where created_by = c.id) > 0;