Mysql查询显示额外的字段

时间:2016-05-11 17:37:36

标签: mysql

我正在尝试此查询:

SELECT * FROM heath_check where cid = '1' and eid in('3','5','7','1','6')

我的表结构:

enter image description here

我想要不同的eid但是所有其他数据都是如此。例如,我有两个条目,eid 1我的查询同时被提取,但我想要一个在第二列中。{/ p>

enter image description here

2 个答案:

答案 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