首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单查询提取用户没有的所有成就(一对多)

简单查询提取用户没有的所有成就(一对多)
EN

Stack Overflow用户
提问于 2016-08-22 23:13:42
回答 1查看 25关注 0票数 0

给出下一张表

成就

  • id
  • 标题
  • sub_title
  • 描述

Achievements_user

  • id
  • achievement_id
  • user_id

我想提取用户没有的所有成就,我已经运行了这样的查询:

代码语言:javascript
复制
SELECT DISTINCT(achievements.id), achievements.title, 
achievements.sub_title 
FROM achievements 
LEFT JOIN achievements_user 
ON achievements.id=achievements_user.achievement_id 
WHERE achievements_user.user_id != 123 
OR achievements_user.user_id IS NULL

但我觉得这不是个好办法。什么是最好的解决办法呢?

EN

回答 1

Stack Overflow用户

发布于 2016-08-22 23:21:37

您需要将具体测试(但正测试)移动到联接中,否则左侧连接将悄然变成内部连接:

代码语言:javascript
复制
SELECT achievements.id, achievements.title, achievements.sub_title
FROM achievements                          -- all achievements potentially returned
LEFT JOIN achievements_user ON achievements.id = achievements_user.achievement_id 
    AND achievements_user.user_id = 123    -- tries to join to all user's achievements 
WHERE achievements_user.user_id IS NULL    -- only missed joins returned

你不需要DISTINCT

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39090099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档