以下是我的表格设置
Results_class
CREATE TABLE appfilter.results_class (
activity varchar(120) NOT NULL,
class varchar(255) NOT NULL,
PRIMARY KEY (activity, class)
)
用户
CREATE TABLE appfilter.user (
user varchar(15) NOT NULL,
name varchar(100) NOT NULL,
activity_full varchar(200) NOT NULL,
activity varchar(125) NOT NULL,
class varchar(125) NOT NULL
)
我想要的结果很简单。我希望看到活动匹配的所有行和类不匹配的行。
示例
Results_class
activity class
com.google.android.apps.plus com.google.android.apps.circles.realtimechat.ConversationListActivity
com.google.android.apps.plus com.google.android.apps.plus.phone.ConversationListActivity
用户
activity class
com.google.android.apps.plus com.google.android.apps.circles.realtimechat.ConversationListActivity
我需要它来选择
这个缺少的活动/类activity class
com.google.android.apps.plus com.google.android.apps.plus.phone.ConversationListActivity<br>
我试过这个,它给了我所有的活动/课程。现在,如果我可以删除那些已经存在于我需要的内容中的那些。
SELECT
rc.activity, rc.class
FROM results_class rc
INNER JOIN user b
ON b.activity = rc.activity
答案 0 :(得分:1)
试试这个..以下查询模拟MINUS操作,即匹配a类中不在b中的所有内容。
SELECT a.activity,a.class FROM results_class a
left join user b on (a.activity = b.activity and a.class = b.class)
where b.class is null
工作fiddle
编辑后 考虑到问题中遗漏的信息 &#34;如果在results_class中有活动而在用户中没有活动,那么它也会将其恢复。我只需要匹配活动来带来不匹配的类&#34;
select a1.activity,a1.class from (select a.activity,a.class FROM results_class a
left join user b on (a.activity = b.activity and a.class = b.class)
where b.class is null) a1 inner join user b1 on a1.activity = b1.activity
答案 1 :(得分:0)
尝试使用存在
的子查询SELECT rc.activity, rc.class
FROM results_class rc
JOIN users c on c.activity = rc.activity
WHERE NOT EXISTS
( SELECT 1
FROM user b
WHERE b.class = rc.class
)
所以基本上你在加入用户时得到所有的results_class活动..然后过滤掉results_class中但不在用户中的类。