Mysql 仅当特定用户没有代码时才选择代码
我有一个表,其中包含每个拥有ASIN的用户的ASIN代码条目 示例:列出的项目表:Mysql 仅当特定用户没有代码时才选择代码,mysql,sql,subquery,having-clause,Mysql,Sql,Subquery,Having Clause,我有一个表,其中包含每个拥有ASIN的用户的ASIN代码条目 示例:列出的项目表: User_id---asin 12--------B078JKTHRL 6---------B078JKTHRL 16--------B078JKTHRL 5---------B078JKTHRL 87--------B078JKTHRL 90--------B078JKTHRL 我想做一个选择,只返回不属于特定用户的ASIN。 当我这样做时: SELECT ASIN FROM listed_items ad
User_id---asin
12--------B078JKTHRL
6---------B078JKTHRL
16--------B078JKTHRL
5---------B078JKTHRL
87--------B078JKTHRL
90--------B078JKTHRL
我想做一个选择,只返回不属于特定用户的ASIN。
当我这样做时:
SELECT ASIN FROM listed_items ad WHERE user_id NOT IN (5,16,9)
我仍然得到用户16和5拥有的ASIN,因为它当然是从其他用户那里得到的ASIN。我的目标是只为用户5、16和9带来没有条目的ASIN
你能帮我做这个吗?
谢谢您需要查看具有相同asin
的行组,这建议聚合:使用分组依据
;然后,您可以使用具有条件的实现过滤逻辑。在MySQL中,您可以将其表述为:
select asin
from listed_items
group by asin
where max(user_id in (5,16,9)) = 0
这将为asin中的每个生成一行。如果您想要完整的对应行,那么这是一个完全不同的问题。我建议不存在
:
select li.*
from listed_items li
where not exists (
select 1
from listed_items li1
where li1.asin = li.asin and li1.user_id in (5,16,9)
)
不在以下位置使用:
SELECT *
FROM listed_items
WHERE `asin` NOT IN(SELECT `asin` FROM listed_items WHERE user_id IN(5,16,9) AND `asin` IS NOT NULL);
条件:和asin不为空
仅当列asin
可为空时才需要