首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >左外连接多个条件- MYSQL

问左外连接多个条件- MYSQL
EN

Stack Overflow用户
提问于 2015-08-28 17:27:36
回答 2查看 1.3K关注 0票数 0

我在一个非常简单的查询中遇到了一些问题。我想,这肯定是因为关于SQL查询工作方式的错误假设。我试图使用以下表编写一个简单的左外部联接查询:

代码语言:javascript
复制
tmtrip_viewer( tmtrip_id, tmuser_id )      -> FKs: (tmtrip.id, tmuser.id)
Values: ( 6, 2 )
        ( 6, 3 )
        ( 7, 4 )

tmtrip( id, ...)
Values: (1, ...)
        (2, ...)
        (3, ...)
        (4, ...)

tmuser(id, username, ...)
Values: (1, user1)
        (2, user2)
        (3, user3)
        (4, user4)

我想要做的是:在以下条件下,从id表中显示all tmuser:- id != '1‘-该id不在表tmtrip_viewer中,其中tmtrip_viewer.tmtrip_id = 7。

基本上,我希望获得所有没有使用tmtrip_id =7查看tmtrip的用户(除了登录的用户..id='1')。

我提出了以下查询,但它的行为不符合要求:

代码语言:javascript
复制
SELECT a.`id`, a.`username` FROM 
`tmuser` a LEFT OUTER JOIN `tmtrip_viewer` b
ON a.`id` = b.`tmuser_id` AND b.`tmtrip_id` = '7'
WHERE a.id <> '1'

为什么这不管用?怎样才是正确的方法呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-28 17:30:31

将AND b.tmtrip_id IS NULL添加到WHERE中。您的查询是获取所有tmuser和他们的"trip 7“信息,如果他们有;这将减少结果只有那些没有"trip 7”信息。

票数 2
EN

Stack Overflow用户

发布于 2015-08-28 17:37:11

我觉得这能做你想做的事。

它将为每个没有ID =1的用户显示一条记录,在tm_tripviewer中也不会显示tmtrip_id = 7的记录。

代码语言:javascript
复制
SELECT id, username
FROM tmuser
WHERE id != 1
AND id NOT IN
(SELECT id FROM tmtrip_viewer WHERE tmtrip_id = 7)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32276632

复制
相关文章

相似问题

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