我有一张表是这样写的:
column_a column_b
foo 1
bar 1
baz 2
我需要在我的结果集中得到这个:
foo 1
baz 2
因此,我需要选择字段 column_b 不同的行。我尝试通过使用带有 select distinct 但没有 dice 的子查询来想出一些方法来做到这一点。我对 SQL 还是有点菜鸟。
最佳答案
您可能想尝试以下操作(使用日期时间字段,对上述评论进行进一步说明):
SELECT (
SELECT column_a
FROM foo_table f2
WHERE f2.column_b = f1.column_b
ORDER BY f2.date DESC
LIMIT 1
) column_a,
f1.column_b
FROM foo_table f1
GROUP BY f1.column_b;
测试用例:
CREATE TABLE foo_table (column_a varchar(10), column_b int, date datetime);
INSERT INTO foo_table VALUES ('foo', 1, '2010-06-03 00:00:00');
INSERT INTO foo_table VALUES ('bar', 1, '2010-06-02 00:00:00');
INSERT INTO foo_table VALUES ('baz', 2, '2010-06-01 00:00:00');
结果:
+----------+----------+
| column_a | column_b |
+----------+----------+
| foo | 1 |
| baz | 2 |
+----------+----------+
2 rows in set (0.04 sec)
关于sql - 如何在MySQL的结果集中选择具有唯一字段的所有行,并获取该行中的所有字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3127139/