我有以下MySQL声明:
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选择那些左范数条目?
有了上面的陈述,我会得到:
-----------------------
| NormID | NormName |
-----------------------
| 1 | A |
| 2 | B |
| 4 | D |
| 7 | G |
-----------------------我想要这张桌子
-----------------------
| NormID | NormName |
-----------------------
| 3 | C |
| 5 | E |
| 6 | F |
| 8 | H |
-----------------------发布于 2017-04-06 07:45:34
我想(如果我理解你的要求),你可以试试这个:
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; 编辑在您的评论之后。我认为您可以使用:
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; 或
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;发布于 2017-04-06 07:52:07
在添加了示例数据之后,没有使用109 wireid设置的条目如下:
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; 发布于 2017-04-06 08:03:04
试试这个:
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)我不太确定,因为我没有你的资料
https://stackoverflow.com/questions/43248713
复制相似问题