mysql - SQL group by 输出特定数据

标签 mysql sql

ID     tag      index 
001       1     fsklgg
001       2     segwrh
001       3     esfjkg
002       4     seggrg
002       5     gehewv
002       6     egwgsg
003       1     esgges
003       4     yjkdsa
003       9     wrfsbb

我要按规则输出

1. each ID will only have one output
2. the output will be  sort by "tag" which is the largest

像这样

ID     tag      index 
001       3     esfjkg
002       6     egwgsg
003       9     wrfsbb

但我的答案总是

ID     tag      index 
001       1     fsklgg
002       4     seggrg
003       1     esgges

我使用 GROUP BY 标签,但答案将是最小的。 我尝试使用 ORDER BY DESC ,希望答案会改变,但它不起作用。 谁能教我如何接近答案? 或者我应该使用什么命令?

我的源码是

SELECT
t1.`藥品代碼` AS ID,
t1.`藥價參考截止日期` AS tag,
t1.`藥價參考金額` AS `index`,
t1.`藥品英文名稱` AS index2,
t1.`藥價參考日期` AS index3,
t1.ATC_CODE AS index4
FROM
    `健保用藥品項查詢檔` AS t1
GROUP BY
ID
HAVING
id IS NOT NULL
ORDER BY
id ASC,
tag ASC

使用 MariaDB

最佳答案

SELECT t1.ID,
       t1.tag,
       t1.index
FROM yourTable t1
INNER JOIN
(
    SELECT ID, MAX(tag) AS tag
    FROM yourTable
    GROUP BY ID
) t2
    ON t1.ID  = t2.ID AND
       t1.tag = t2.tag
ORDER BY t1.tag

使用子查询:

SELECT t1.ID,
       t1.tag,
       t1.index
FROM yourTable t1
WHERE t1.tag = (SELECT MAX(tag) FROM yourTable WHERE ID = t1.ID)

关于mysql - SQL group by 输出特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39443026/

相关文章:

php - mysql 在连接大表时有时会很慢

SQL过滤掉不太具体的行

SQL Query 以设定的顺序返回值

PHP PDO 不插入新记录

php - Laravel 从数据库中获取数据

php - SQL 优化左外连接查询

mysql - 无需 MySQL 即可创建和访问数据库?

SQL:过滤具有最大值的行

sql - 帮助处理主键和唯一约束

sql - 在 native sql 查询中使用 IN 子句