gpt4 book ai didi

mysql - 如何选择包含所选表的新列?

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:45 25 4
gpt4 key购买 nike

如何选择包含所选表的新列?我尝试这样做但它返回错误说(#1242 - 子查询返回超过 1 行)

SELECT 
(SELECT SUM(A+AA+AB+AC+AD+AE+AF+AG+AH+AI+AJ+AK+AL+AM+AN+AO+
B+C+CL+D+E+F+G+H+I+J+K+L+LK+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z)
AS SELESAI
FROM statistik WHERE stastus = '1' GROUP BY kategori ),

SUM(A+AA+AB+AC+AD+AE+AF+AG+AH+AI+AJ+AK+AL+AM+AN+AO+
B+C+CL+D+E+F+G+H+I+J+K+L+LK+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z)
AS Jumlah,kategori,
SUM(A) AS A,
SUM(AA) AS AA,
SUM(AB) AS AB,
SUM(AC) AS AC,
SUM(AD) AS AD,
SUM(AE) AS AE,
SUM(AF) AS AF,
SUM(AG) AS AG,
SUM(AH) AS AH,
SUM(AI) AS AI,
SUM(AJ) AS AJ,
SUM(AK) AS AK,
SUM(AL) AS AL,
SUM(AM) AS AM,
SUM(AN) AS AN,
SUM(AO) AS AO,
SUM(B) AS B,
SUM(C) AS C,
SUM(CL) AS CL,
SUM(D) AS D,
SUM(E) AS E,
SUM(F) AS F,
SUM(G) AS G,
SUM(H) AS H,
SUM(I) AS I,
SUM(J) AS J,
SUM(K) AS K,
SUM(L) AS L,
SUM(LK) AS LK,
SUM(M) AS M,
SUM(N) AS N,
SUM(O) AS O,
SUM(P) AS P,
SUM(Q) AS Q,
SUM(R) AS R,
SUM(S) AS S,
SUM(T) AS T,
SUM(U) AS U,
SUM(V) AS V,
SUM(W) AS W,
SUM(X) AS X,
SUM(Y) AS Y,
SUM(Z) AS Z
FROM statistik WHERE stastus = '4' GROUP BY kategori ;

这是我的数据库:

-- 表 statistik

的表结构
CREATE TABLE `statistik` (
`id` int(100) NOT NULL,
`kategori` varchar(100) DEFAULT NULL,
`stastus` int(100) DEFAULT NULL,
`tarikhLaporan` date DEFAULT NULL,
`A` int(2) NOT NULL,
`AA` int(2) NOT NULL,
`AB` int(2) NOT NULL,
`AC` int(2) NOT NULL,
`AD` int(2) NOT NULL,
`AE` int(2) NOT NULL,
`AF` int(2) NOT NULL,
`AG` int(2) NOT NULL,
`AH` int(2) NOT NULL,
`AI` int(2) NOT NULL,
`AJ` int(2) NOT NULL,
`AK` int(2) NOT NULL,
`AL` int(2) NOT NULL,
`AM` int(2) NOT NULL,
`AN` int(2) NOT NULL,
`AO` int(2) NOT NULL,
`B` int(2) NOT NULL,
`C` int(2) NOT NULL,
`CL` int(2) NOT NULL,
`D` int(2) NOT NULL,
`E` int(2) NOT NULL,
`F` int(2) NOT NULL,
`G` int(2) NOT NULL,
`H` int(2) NOT NULL,
`I` int(2) NOT NULL,
`J` int(2) NOT NULL,
`K` int(2) NOT NULL,
`L` int(2) NOT NULL,
`LK` int(2) NOT NULL,
`M` int(2) NOT NULL,
`N` int(2) NOT NULL,
`O` int(2) NOT NULL,
`P` int(2) NOT NULL,
`Q` int(2) NOT NULL,
`R` int(2) NOT NULL,
`S` int(2) NOT NULL,
`T` int(2) NOT NULL,
`U` int(2) NOT NULL,
`V` int(2) NOT NULL,
`W` int(2) NOT NULL,
`X` int(2) NOT NULL,
`Y` int(2) NOT NULL,
`Z` int(2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- 转储表 statistik

的数据
INSERT INTO `statistik` (`id`, `kategori`, `stastus`, `tarikhLaporan`, `A`, `AA`, `AB`, `AC`, `AD`, `AE`, `AF`, `AG`, `AH`, `AI`, `AJ`, `AK`, `AL`, `AM`, `AN`, `AO`, `B`, `C`, `CL`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `LK`, `M`, `N`, `O`, `P`, `Q`, `R`, `S`, `T`, `U`, `V`, `W`, `X`, `Y`, `Z`) VALUES
(8, 'a', 4, '2018-08-17', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(9, 'b', 4, '2018-08-17', 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(10, 'b', 1, '2018-08-17', 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(11, 'b', 1, '2018-08-17', 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(12, 'b', 1, '2018-08-17', 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(13, 'b', 1, '2018-08-17', 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(14, 'b', 1, '2018-08-17', 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(15, 'b', 1, '2018-08-17', 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(16, 'bc', 4, '2018-08-17', 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(17, 'c', 1, '2018-08-23', 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(18, 'c', 1, '2018-08-23', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(19, 'c', 1, '2018-08-23', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(20, 'z', 4, '2018-08-11', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(21, 'z', 1, '2018-08-11', 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(22, '', 1, '0000-00-00', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(23, '', 1, '0000-00-00', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

-- 转储表的索引

-- 表 statistik

的索引
ALTER TABLE `statistik`
ADD PRIMARY KEY (`id`),
ADD KEY `stastus` (`stastus`);

-- 转储表的 AUTO_INCREMENT

-- 表 statistik

的 AUTO_INCREMENT
ALTER TABLE `statistik`
MODIFY `id` int(100) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=24;

最佳答案

顶层嵌套select只能返回一个值。它根本不应该是嵌套查询。最好在每个总和中添加一个 case 语句

(SUM(case when stastus = '1' then A+AA+AB+AC+AD+AE+AF+AG+AH+AI+AJ+AK+AL+AM+AN+AO+
B+C+CL+D+E+F+G+H+I+J+K+L+LK+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z else 0 end)
AS SELESAI,

并让所有其他的都使用这种格式。

sum(case when stastus='4' then A else 0 end) as A

否则,您可以使用连接或联合在一起的多个查询进行重构。

关于mysql - 如何选择包含所选表的新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51814425/

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