MySQL查询,选择不同的/最大
我需要统计从表LDS所有不同的值,其中status = 'ok' AND date >= '2012-01-01'
如果有多个相同的ID,然后只检查一个与最新的日期:如果此ID的“OK”状态,然后算上它。MySQL查询,选择不同的/最大
表LDS:
ID | STATUS | DATE 1 | ok | 2012-01-01 2 | bad | 2012-01-01 1 | bad | 2012-02-02 3 | ok | 2012-01-01 4 | ok | 1999-01-01
的结果应该是 “1”(ID 3)
我假设,因为你要算独特的ID,它并不重要ID是计算在重复的情况下,因为这并不影响最终计数:
编辑:更新查询,以排除其中有一个后续'bad'
状态的任何ID
:
SELECT COUNT(DISTINCT lds1.ID)
FROM
LDS lds1
LEFT JOIN LDS lds2
ON lds1.ID = lds2.ID
AND lds1.Date < lds2.Date
AND lds2.Status = 'bad'
WHERE
lds1.Date > '2012-01-01'
AND lds1.Status = 'ok'
AND lds2.ID IS NUL
使用不使用顺序数/“不同的”返回ID 1和ID 3,但ID 1具有“坏”的一个新的状态,因此不应该在所有计数。 – user1291842 2012-04-06 16:30:01
@ user1291842这只会返回一个计数...单个值。你正在运行什么查询,以及你想要的结果是什么?你想要一个单一的计数?所有ID的列表? – 2012-04-06 17:15:02
感谢您的帮助 - 您的查询正在工作!我没想到它会这么毛茸茸的...... – user1291842 2012-04-06 17:37:50
请注意,它应该不重要*您*数*相同的ID。 – 2012-04-06 16:21:35
结果应该是'0'。除非你的意思是''=''而不是'>' – 2012-04-06 16:22:30
我的桌子上有很多条目,我试过Max(id)FROM LDS WHERE status ='ok'和date>'2012-01-01',但只返回一个单ID(包含最新的日期),而不是所有的ID。 – user1291842 2012-04-06 16:23:35