gpt4 book ai didi

sql - MySQL - 选择除此表中的内容以外的所有内容

转载 作者:行者123 更新时间:2023-11-29 04:14:07 25 4
gpt4 key购买 nike

我想选择用户尚未拥有的所有图像。

我有三个表:userimageuser_image:

  • _user (id, user, pass)
  • _image (id, 数据)
  • _user_image (id, user_id, image_id)

最佳答案

使用LEFT JOIN/IS NULL


   SELECT DISTINCT
i.data
FROM IMAGE i
JOIN USER_IMAGE ui ON ui.image_id = i.id
LEFT JOIN USER u ON u.id = ui.user_id
AND u.user = ?
WHERE u.id IS NULL

使用NOT IN


SELECT DISTINCT
i.data
FROM IMAGE i
JOIN USER_IMAGE ui ON ui.image_id = i.id
WHERE ui.user_id NOT IN (SELECT u.id
FROM USER u
WHERE u.user = ?)

使用NOT EXISTS


SELECT DISTINCT
i.data
FROM IMAGE i
JOIN USER_IMAGE ui ON ui.image_id = i.id
WHERE NOT EXISTS(SELECT NULL
FROM USER u
WHERE u.id = ui.user_id
AND u.user = ?)

性能:


LEFT JOIN/IS NULLNOT IN 提供等效的性能 - NOT EXISTS 的效率低约 30%。 See this for more details .

关于sql - MySQL - 选择除此表中的内容以外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2106372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com