gpt4 book ai didi

MySQL 组数据,每组和订单有 2 个结果

转载 作者:行者123 更新时间:2023-11-29 02:43:44 26 4
gpt4 key购买 nike

我有一个数据库表,其中的数据显示如下。我想从该表中选择具有以下条件的数据。

选择product_id所在的所有记录是1.然后得到每group_id的两条记录其中 manual上面选择了1manual 0. 然后按score下单描述。

这应该给我以下结果:

id | product_id | group_id | manual | score
-------------------------------------------
6 | 1 | 4 | 1 | 400
1 | 1 | 7 | 0 | 1000
2 | 1 | 7 | 0 | 900
5 | 1 | 4 | 0 | 600

这是否可以在一个(简单的)查询中实现?

创建和插入语句;

CREATE TABLE `table` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`product_id` int(11) DEFAULT NULL,
`group_id` int(11) DEFAULT NULL,
`manual` int(11) DEFAULT NULL,
`score` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `table` (`id`, `product_id`, `group_id`, `manual`, `score`)
VALUES
(1, 1, 7, 0, 1000),
(2, 1, 7, 0, 900),
(3, 1, 7, 0, 800),
(4, 1, 7, 0, 700),
(5, 1, 4, 0, 600),
(6, 1, 4, 1, 400),
(7, 1, 4, 0, 300);

最佳答案

不要将表称为table。这很烦人。不管怎样……

    SELECT id
, product_id
, group_id
, manual
, score
FROM
( SELECT x.*
, CASE WHEN @prev = group_id THEN @i := @i+1 ELSE @i := 1 END i
, @prev := group_id
FROM `table` x
, (SELECT @prev:=null,@i:=0) vars
ORDER
BY group_id DESC
, manual <> 1
, score DESC
) n
WHERE i <= 2
ORDER
BY group_id DESC
, manual <> 1
, score DESC;

关于MySQL 组数据,每组和订单有 2 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46217481/

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