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

标签 sql mysql

我有一张表是这样写的:

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/

相关文章:

mysql - 从表中删除数据时出现错误 #1242

php - PHP SQL 中的一篇文章多类别系统

MySQL 创建表时出现错误 1022

php - 如何添加已选中的复选框的值?

mysql - DATEDIFF/案例陈述

mysql - 时间线图的 MySQL 子查询性能更好

php - 多个左连接与总和

mysql - 我有一个 N-N 关系数据,如何通过 mysql 设计我的数据库

sql - oracle 10g中如何缓存函数的查询结果?

javascript - 如何创建 session 登录