我正在尝试此查询:
SELECT * FROM heath_check where cid = '1' and eid in('3','5','7','1','6')
我的表结构:
我想要不同的eid
但是所有其他数据都是如此。例如,我有两个条目,eid
1
我的查询同时被提取,但我想要一个在第二列中。{/ p>
答案 0 :(得分:1)
SELECT *
FROM heath_check AS hc
INNER JOIN (
SELECT MAX(id) AS lastId
FROM heath_check
WHERE cid = '1' and eid in('3','5','7','1','6')
GROUP BY eid) AS lastIDs
ON hc.id = lastIDs.lastId
;
您需要一个子查询(如上所述)来查找每个值所需的记录。如果您想要第一个,可以使用MIN(id)
代替;如果您不能指望顺序ID,那么使用可能非唯一的时间戳(如果它们甚至可用)会变得更加复杂。
答案 1 :(得分:0)
创建按RowNumber
分组的eid
并过滤RowNumber = 1
以获得预期结果。
SELECT id, eid, cid,weight, s_blood_pressure
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY eid ORDER BY id DESC) AS RowNumber
FROM heath_check
WHERE cid = '1' AND eid IN ('3','5','7','1','6')
) A
WHERE RowNumber = 1