如何选择具有唯一字段的所有行,并获取MySQL中结果集中该行的所有字段?

时间:2010-06-27 10:57:55

标签: sql mysql

我有一张桌子上写着这样的话:

column_a  column_b
   foo        1
   bar        1
   baz        2

我需要在结果集中得到这个:

    foo 1
    baz 2

因此,我需要选择字段column_b不同的行。我尝试通过使用具有select distinct但没有骰子的子查询来实现此方法。我在SQL上仍然很吵。

2 个答案:

答案 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