【发布时间】:2012-07-03 16:42:42
【问题描述】:
我想以COUNT 作为JOIN 的条件的方式使用sql JOIN 和COUNT。
例如
SELECT * FROM tbl1
INNER JOIN (SELECT * FROM tbl2) t2
ON (SELECT COUNT(*) FROM tbl1) > 0
这可能吗,或者有人可以告诉我另一种方式吗?
PS- 我遇到的真正问题是我有两个表 A 和 B,我需要从创建日期大于某个值的 A 中选择 id。同时,我想确保表 B 在表 A 中没有该 id。这工作正常,但是当表 B 中没有数据时,查询没有结果。
SELECT a.user_id from (SELECT * FROM A WHERE DATEDIFF(event_date,'certain_value') >=another_value) a INNER JOIN B b ON a.user_id != b.user_id
我尝试像这样使用计数但失败了
SELECT a.user_id from (SELECT * FROM A WHERE DATEDIFF(event_date,'certain_value') >=another_value) a INNER JOIN B b ON count(B.user_id) = 0 OR a.user_id != b.user_id
【问题讨论】:
-
你能解释一下
ON (SELECT COUNT(*) FROM tbl1) > 0发生了什么 -
tbl1 COUNT() 和 tbl2 是什么关系?
-
我不能马上理解它,尽管这绝对是一种可能性:任何产生布尔值的东西都可以用作连接中的条件。如果您分享了您正在尝试解决的问题,那么您是否确实需要这样的加入会更容易。
-
你需要一些键来加入表格。您的 ON 语句实际上应该是 WHERE 子句。
-
试着用英语解释你想要完成的事情,也许用一些示例数据。很难从简短的问题中假设您想要什么类型的查询。您似乎想使用 WHERE 子句而不是连接条件。你熟悉 SQL 吗?
标签: sql