我有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
但显然它不起作用。
答案 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;