这是我的SQL查询
SELECT
a.recordID b.recordState
FROM
RecordTable a
INNER JOIN
RecordStateTable b ON a.recordID = b.recordID
此查询的输出是
RecordID RecordState
--------------------------
record1 passed
record2 passed
record3 passed
record3 failed
record4 passed
在结果中我得到 record3 的两个值,即传递和失败。我想丢弃具有传递和失败值的行,并仅选择失败的行。
我需要在最终结果中仅获得record1
,record2
,record4
。我不想要record3
,因为它包含传递和失败的值。
答案 0 :(得分:4)
有几种方法,一种是使用GROUP BY
:
select RecordID, max(RecordState)
from RecordTable a
inner join RecordStateTable b
on a.recordID = b.recordID
group by RecordID
因为通过>会工作失败。
答案 1 :(得分:0)
您的JOIN
是不必要的。编写查询的最简单方法是:
SELECT rst.recordID, MAX(rst.recordState) as recordState
FROM RecordStateTable rst
GROUP BY rst.recordID;
注意:
GROUP BY
。JOIN
是不必要的,因为recordID
与recordState
位于同一个表格中。