0

如果这是重复的,我深表歉意,但是,我找不到我需要的答案。

考虑我的数据:

表 - report_detail

report_id   |category    |sub_category   |report name
-------------------------------------------------------
1           |1           |1              |Donkey Report
2           |2           |2              |Grandma Report
3           |1           |1              |Poop Report

表 - report_subscriptions

user_id     |report_id
--------------------------
1           |1            
2           |2            
1           |2

我的问题是,如何从report_detail 表中选择report_subscriptions 中未订阅user_id = 1 的所有report_id?

谢谢!

4

3 回答 3

0

这应该让你相当接近

select * from Report_detail RD
where RD.report_id not in (select disctinct RS.report_id from report_subscriptions RS)
于 2012-11-29T23:41:50.680 回答
0

在 SQL Fiddle 测试:http ://sqlfiddle.com/#!2/e7e3a/1/0

select rd.report_id 
from   report_detail rd
where  not exists (
           select 1 
           from   report_subscriptions rs 
           where  rs.user_id = 1 
                  and rs.report_id = rd.report_id);
于 2012-11-29T23:44:55.560 回答
0

如果您只需要报告 ID,则根本没有理由让 report_detail 表参与其中。
只需这样做:

SELECT DISTINCT report_id FROM report_subscriptions WHERE user_id <> 1

如果您确实需要使用此约束从 report_details 表中获取数据,只需执行

SELECT * FROM report_detail
WHERE report_id IN (SELECT DISTINCT report_id FROM report_subscriptions WHERE user_id <> 1)
于 2012-11-29T23:45:07.523 回答