仅获取2个结果,每个结果对应一个具体字段的不同值

时间:2016-08-11 18:54:05

标签: mysql sql

在包含这5个字段的MYSQL表中:id, user_id, date, type, uid其中type可以是12,我正在查找单个查询,我可以在其中获取2结果,一个用于type = 1,另一个用于type = 2,基于日期字段。

现在我有以下查询,它只给了我最后一个uid,而没有处理type字段。

    SELECT t.uid
    FROM table AS t
    WHERE t.user_id = 666
    ORDER BY t.date
    DESC LIMIT 1

有没有人知道如何修改此查询,以便我可以根据日期字段获取type = 1的最后一个uid和最后一个type = 2的uid?我想保留一个查询

2 个答案:

答案 0 :(得分:1)

Union all可能是最简单的方法:

(select t.*
 from t
 where t.user_id = 666 and t.type = 1
 order by date desc
 limit 1
) union all
(select t.*
 from t
 where t.user_id = 666 and t.type = 2
 order by date desc
 limit 1
)

答案 1 :(得分:0)

最后,我更新了这个“范例”之后的查询:

http://dev.mysql.com/doc/refman/5.7/en/example-maximum-column-group-row.html http://jan.kneschke.de/projects/mysql/groupwise-max/

这是查询结束的方式:

SELECT s1.type, s1.uid  
FROM t AS s1  
LEFT JOIN t AS s2 ON s1.type = s2.type AND s1.date < s2.date  
WHERE s2.date IS NULL;  

以下是一个直观的例子:http://hastebin.com/ibinidasuw.vhdl

来自snoyes #sql的{​​{1}}来自Freenode。 :)