如何获取用户ID不在表记录中的选定行
像这样的表表-A
id subid userid
1 2 123
2 4 123
表-B
id title
1 like
2 liked
3 bookmark
4 bookmarked
我使用连接表来获得结果 如果WHERE userid = 123则获得结果
id title
2 liked
4 bookmarked
查询
select b.id,b.title from
table_a a
LEFT JOIN table_b b
ON b.id = a.subid
WHERE a.userid = '123'
但是,如果userid ='345'并且不在table_a中也得到结果呢?..结果必须像这样(选定的行)
id title
1 like
3 bookmark
三江源
答案 0 :(得分:0)
尝试使用此查询 从(b.no = a.no)上的连接b中选择a.no,b.title,其中a.userid ='345'
答案 1 :(得分:0)
您可以使用以下查询:
SELECT id, title FROM t2 LEFT JOIN t1 ON t1.subid = t2.id
WHERE (t1.userid = 345 AND NOT userid IS NULL) OR (
NOT EXISTS(SELECT userid FROM t1 WHERE userid = 345) AND userid IS NULL
);
您可以在此处找到工作示例:http://sqlfiddle.com/#!9/c6a446/25
答案 2 :(得分:0)
您可以使用左连接并获取表格中不匹配的数据。我最近解决了这个问题。 Chk这个链接: Least Popular Event - Get list of events where bookings IS NULL OR LEAST
在mysql中
SELECT b.no,b.title FROM a LEFT JOIN b ON a.subid = b.no and where a.userid IS NULL;
SELECT b.no,b.title FROM a LEFT JOIN b ON a.subid = b.no and where a.userid <> '345';
在laravel中: $ least = bmodel :: leftJoin(&#39; a&#39;,函数($ join) { $ join-&gt; on(&#39; a.subid&#39;,&#39; =&#39;,&#39; b.no&#39;); }) - &GT;选择(&#39; b.no&#39;&#39; b.title&#39;) - &GT; whereNull(&#39; a.userid&#39;) - &gt;首先();或得到()
您可以使用此查询获取一个或多个结果。它基本上将userid列与没有列进行比较,并获得表a中没有匹配项的no和title列表。
答案 3 :(得分:0)
这基本上会选择给定的userId,或者如果不存在则选择
的结果
SELECT * FROM t2 LEFT JOIN t1 ON t1.subid = t2.id WHERE t1.userid = 123||
(select userid from t1 where userid =123LIMIT 1) is null
这是第二种情况,您将获得不是123或任何数字的所有行
SELECT * FROM t2 LEFT JOIN t1 ON t1.subid = t2.id WHERE t1.userid = 345 ||
(select userid from t1 where userid =345 LIMIT 1) is null