我有一张桌子上写着这样的话:
column_a column_b
foo 1
bar 1
baz 2
我需要在结果集中得到这个:
foo 1
baz 2
因此,我需要选择字段column_b不同的行。我尝试通过使用具有select distinct但没有骰子的子查询来实现此方法。我在SQL上仍然很吵。
答案 0 :(得分:2)
您可能需要尝试以下操作(使用日期时间字段,进一步上述注释):
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)
答案 1 :(得分:0)
这样的事情应该这样做 - 对于column_b的每个不同值,你获得哪个column_a是否重要?
select column_a,column_b from yourtable group by column_b