[英]how to select rows based on two distinct columns?
我有这样的桌子
id type type_id cust ip_address datetime
395 Category 5 0 119.63.196.29 2012-11-27 00:34:21
394 Cart 812 0 84.208.217.178 2012-11-27 00:31:48
393 Cart 812 0 84.208.217.178 2012-11-27 00:31:41
392 Cart 812 0 84.208.217.178 2012-11-27 00:31:35
391 Product 812 0 84.208.217.178 2012-11-27 00:31:34
我想选择按ID desc排序的4行,它们具有不同的type + type_id数据。
因此查询的结果将删除id 393和392,因为type和type_id组合已经在id 394中。
伪代码:从类型和类型_结果与结果集不同的表中选择*,按ID desc限制4
select * from table
where id in
(
select min(id)
from table
group by type, type_id
)
order by id desc
limit 4
SELECT *
FROM AnonymousTable AS a1
JOIN (SELECT type, type_id, MAX(id) AS id
FROM AnonymousTable
GROUP BY type, type_id
) AS a2
ON a1.type = a2.type AND a1.type_id = a2.type_id AND a1.id = a2.id
但是,由于ID值可能是唯一的,因此您可以简化子查询和随后的联接:
SELECT *
FROM AnonymousTable AS a1
JOIN (SELECT MAX(id) AS id
FROM AnonymousTable
GROUP BY type, type_id
) AS a2
ON a1.id = a2.id
即使id
不是唯一的(只要id
, type
和type_id
的组合是唯一的),较长的格式也会产生正确的答案。
尝试这个:
SELECT t1.*
FROM table t1
INNER JOIN
(
SELECT MAX(id) maxid, type_id, type
FROM table
GROUP BY type_id, type
) t2 ON t1.id = t2.maxid AND t1.type = t2.type AND t1.type_id = t2.type_id
ORDER BY t1.id desc
LMIT 4;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.