gpt4 book ai didi

mysql - 如何在考虑到 SQL 中的另一列的情况下选择列中的下一个可用值?

转载 作者:行者123 更新时间:2023-11-28 23:27:21 26 4
gpt4 key购买 nike

我有以下 SQL 表:

    bid btype    Name      world    vi
---|----|------------ |--------|---------
1 | 1 | Business 1 | 0 | 44
2 | 4 | Business 2 | 0 | 55
5 | 5 | Business 3 | 0 | 23
3 | 1 | Business 4 | 1 | 99
4 | 2 | Business 5 | 0 | 12
6 | 3 | Business 6 | 0 | 14
7 | 2 | Business 7 | 1 | 55
8 | 1 | Business 8 | 2 | 66
9 | 2 | Business 9 | 2 | 77
10 | 1 | Business 10 | 3 | 88

我想要的是根据其“btype”逐渐增加“world”列中的值,例如“world”列中的每一行都以值 0 开头因为这是第一次在“btype”列中插入这样的值,所以我想要检查是否已经插入了“btype”,以便“world”列不再假定值为 0 而是 1 等等...我想要实现的是,不能有两行共享相同的“btype”和相同的“world”,“btype”可以相同但不能是“world”,它必须不同,我想要逐渐增加。

我将如何做这样的事情?

最佳答案

例如:

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(bid INT NOT NULL PRIMARY KEY
,btype INT NOT NULL
);

INSERT INTO my_table VALUES
( 1,1),
( 2,4),
( 5,5),
( 3,1),
( 4,2),
( 6,3),
( 7,2),
( 8,1),
( 9,2),
(10,1);

SELECT bid
, btype
, i
FROM
( SELECT x.*
, CASE WHEN @prev=btype THEN @i:=@i+1 ELSE @i:=0 END i
, @prev:=btype prev
FROM my_table x
,( SELECT @i:=0,@prev:=null) vars
ORDER
BY btype,bid
) n
ORDER
BY bid;
+-----+-------+------+
| bid | btype | i |
+-----+-------+------+
| 1 | 1 | 0 |
| 2 | 4 | 0 |
| 3 | 1 | 1 |
| 4 | 2 | 0 |
| 5 | 5 | 0 |
| 6 | 3 | 0 |
| 7 | 2 | 1 |
| 8 | 1 | 2 |
| 9 | 2 | 2 |
| 10 | 1 | 3 |
+-----+-------+------+

关于mysql - 如何在考虑到 SQL 中的另一列的情况下选择列中的下一个可用值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38748582/

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