首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL从从另一个表连接的表中选择所有左项。

MySQL从从另一个表连接的表中选择所有左项。
EN

Stack Overflow用户
提问于 2017-04-06 07:39:44
回答 3查看 33关注 0票数 0

我有以下MySQL声明:

代码语言:javascript
复制
SELECT      norm.NormID, norm.NormName
FROM        (assignment
INNER JOIN  norm
ON          assignment.NID = norm.NormID )
INNER JOIN  wire
ON          assignment.LID = wire.WireID
WHERE       wire.WireID= 109 
ORDER BY    norm.NormName;  

现在,我得到的是表赋值中包含NormID和NormName的WireID条目。我想得到的是表规范中的条目,这些条目没有为这个WireID设置。

例如: WireID有范数赋值A,B,D,G。

表范数有A,B,C,D,E,F,G,H。

我想从MySQL的状态中得到的是条目C,E,F,H。

如何为这个WireID选择那些左范数条目?

有了上面的陈述,我会得到:

代码语言:javascript
复制
-----------------------
| NormID  | NormName  |
-----------------------
| 1       |  A        |
| 2       |  B        |
| 4       |  D        |
| 7       |  G        |
-----------------------

我想要这张桌子

代码语言:javascript
复制
-----------------------
| NormID  | NormName  |
-----------------------
| 3       |  C        |
| 5       |  E        |
| 6       |  F        |
| 8       |  H        |
-----------------------
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-06 07:45:34

我想(如果我理解你的要求),你可以试试这个:

代码语言:javascript
复制
SELECT      norm.NormID, norm.NormName
FROM        assignment
INNER JOIN  norm ON assignment.NID = norm.NormID
LEFT JOIN   wire ON assignment.LID = wire.WireID
WHERE       assignment.LID= 109 
        AND wire.wireID IS NULL
ORDER BY    norm.NormName;  

编辑在您的评论之后。我认为您可以使用:

代码语言:javascript
复制
SELECT      A.NormID, A.NormName
FROM        norm A
LEFT JOIN   (SELECT NID FROM assignment WHERE LID = 109) B ON B.NID = A.NormID
WHERE       B.NID IS NULL     
ORDER BY    A.NormName;  

代码语言:javascript
复制
SELECT      A.NormID, A.NormName
FROM        norm A
WHERE NOT EXISTS (SELECT 1 FROM assignment WHERE LID = 109 AND ASSIGNMENT.NID = A.NormID)
ORDER BY    A.NormName;
票数 0
EN

Stack Overflow用户

发布于 2017-04-06 07:52:07

在添加了示例数据之后,没有使用109 wireid设置的条目如下:

代码语言:javascript
复制
SELECT      norm.NormID, norm.NormName
FROM        assignment
inner JOIN  norm
ON          assignment.NID = norm.NormID 
INNER JOIN  wire
ON          assignment.LID = wire.WireID
WHERE       wire.WireID <> 109 
ORDER BY    norm.NormName;  
票数 0
EN

Stack Overflow用户

发布于 2017-04-06 08:03:04

试试这个:

代码语言:javascript
复制
select  norm.NormID,norm.NormName from norm
Inner JOIN
assignment on assignment.NID = norm.NormID
where assignment.LID in(select wireID from Wire where WireID = 109)

我不太确定,因为我没有你的资料

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

https://stackoverflow.com/questions/43248713

复制
相关文章

相似问题

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