2017-05-04 156 views
0

我试图写一个返回从表1中的所有记录,所有记录从表2那里是一个比赛,但排除其中一列包含了一组内容两个表记录的查询。Mysql的排除从LEFT OUTER记录JOIN

SELECT h.UniqueID, h.Room, h.AuditBy, h.AuditDate, h.SeqID, h.Stat, h.RepairCode, d.SeqNo, d.SeqHeader, d.SeqText 
FROM NXLHR_SequenceNo_default d 
LEFT OUTER JOIN NXLHR_Hist_17 h 
ON d.SeqID = h.SeqID AND h.UniqueID = 'NXLHR02571493893502' 
WHERE h.Stat = 1 OR h.Stat = 2 AND RepairCode IS NULL AND h.SeqID != '1306' OR h.SeqID != '1307' 

此刻我的查询retruns记录,其中列h.SeqID包含“1306” OR h.SeqID包含“1307”

有没有办法可以过滤掉其中列的SeqID包含任何记录从结果中选择'1306'或'1307'。

我现在的样本数据 enter image description here

提前为您的时间非常感谢。

+0

这听起来像一个*内部联接*。样本数据和期望的结果将有所帮助。 –

+0

1)给出的样本数据对两个表用于匹配的记录,这将在输出中使用。 2)你的预期输出基于该 – Utsav

+0

见https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be- A-极简单的SQL查询 – Strawberry

回答

1

从你的描述,你似乎要内部连接。你周围的条件括号中的WHERE子句中的问题 - 但这是使用INNOT IN更容易固定:

SELECT h.UniqueID, h.Room, h.AuditBy, h.AuditDate, h.SeqID, h.Stat, 
     h.RepairCode, d.SeqNo, d.SeqHeader, d.SeqText 
FROM NXLHR_SequenceNo_default d INNER JOIN 
     NXLHR_Hist_17 h 
     ON d.SeqID = h.SeqID AND h.UniqueID = 'NXLHR02571493893502' 
WHERE h.Stat IN (1, 2) AND 
     h.RepairCode IS NULL AND 
     h.SeqID NOT IN ('SeqID1306', 'SeqID1307') ; 
+0

我已经加入我的样本数据后。还尝试使用INNER JOIN和NOT IN的代码,但我仍然得到相同的结果,即结果包含SeqID包含1306或1307的记录。非常感谢您的帮助。 – DCJones

+0

'SeqID'似乎是一种特殊格式的字符串。 –

+0

这就是我在没有详细看我的查询愚蠢的错误。有另一双眼睛看这个问题的好处。戈登,非常感谢你的帮助。修复和工作。 – DCJones