您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

mysql查询选择所有内容,除了

mysql查询选择所有内容,除了

SELECT w.*
  FROM WIDGET w
 WHERE w.widget_id NOT IN (SELECT c.widget
                             FROM CHOSEN c
                            WHERE c.user_id = $user_id)
SELECT w.*
  FROM WIDGET w
 WHERE NOT EXISTS (SELECT NULL
                     FROM CHOSEN c
                    WHERE c.widget_id = w.widget_id 
                      AND c.user_id = $user_id)
   SELECT w.*
     FROM WIDGET w
LEFT JOIN CHOSEN c ON c.widget_id = w.widget
                  AND c.user_id = $user_id
    WHERE w.widget IS NULL

如果比较列(任一表中的widget_id)不可为空,则LEFT JOIN / IS NULL在MySQL上表现最佳。如果列可为空(值可以为NULL),则NOT IN或NOT EXISTS的性能更好

MySQL 2022/1/1 18:49:34 有286人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶