在包含这5个字段的MYSQL表中:id, user_id, date, type, uid
其中type
可以是1
或2
,我正在查找单个查询,我可以在其中获取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?我想保留一个查询
答案 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
。 :)