gpt4 book ai didi

mysql - 选择 N 行的唯一记录限制

转载 作者:行者123 更新时间:2023-11-29 12:36:42 26 4
gpt4 key购买 nike

我的数据库记录如下所示,

id  | dataId    | value
1 | 1 | xxx
2 | 1 | xx1
3 | 1 | xx2
4 | 1 | xx1
5 | 2 | yyy
6 | 2 | yy1
7 | 2 | yy2
8 | 1 | zzz
9 | 2 | yy3

我想要的结果是这样的

id  | dataId    | value
8 | 1 | zzz
4 | 1 | xx1
3 | 1 | xx2
9 | 2 | yy3
7 | 2 | yy2
6 | 2 | yy1

我想为每个 dataId 选择 N 个最新 id,其中 N 在本例中为 3

提前致谢。

最佳答案

  DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,dataId INT NOT NULL
,value VARCHAR(12) NOT NULL
);

INSERT INTO my_table VALUES
(1 ,1 ,'xxx'),
(2 ,1 ,'xx1'),
(3 ,1 ,'xx2'),
(4 ,1 ,'xx1'),
(5 ,2 ,'yyy'),
(6 ,2 ,'yy1'),
(7 ,2 ,'yy2'),
(8 ,1 ,'zzz'),
(9 ,2 ,'yy3');

SELECT x.*
FROM my_table x
JOIN my_table y
ON y.dataid = x.dataid
AND y.id >= x.id
GROUP
BY dataid
, id
HAVING COUNT(*) <= 3
ORDER
BY dataid
, id DESC;
+----+--------+-------+
| id | dataId | value |
+----+--------+-------+
| 8 | 1 | zzz |
| 4 | 1 | xx1 |
| 3 | 1 | xx2 |
| 9 | 2 | yy3 |
| 7 | 2 | yy2 |
| 6 | 2 | yy1 |
+----+--------+-------+
6 rows in set (0.03 sec)

mysql>

关于mysql - 选择 N 行的唯一记录限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26677063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com