gpt4 book ai didi

php - MYsql 与存在语句的联合

转载 作者:行者123 更新时间:2023-11-29 18:20:50 24 4
gpt4 key购买 nike

所以我有一个相当复杂的sql语句,根据要求将十个表合并为一个表。

结果示例(仅包含此问题所需的基本内容)

Unique | date | amount | Table
12345 | 10/2 | 200 | 1
12345 | 10/2 | 20 | 2
23456 | 10/3 | 100 | 3

我的问题是,由于前两行的唯一性是相同的,但来自不同的表,我如何将它们合并在一起,使其变成这样?

Unique | date | amount | Table
12345 | 10/2 | 220 | 1 (Don't really care about the table number)
23456 | 10/3 | 100 | 3

这是我的声明样本

(SELECT unique, dates, amt, tbl FROM ..... WHERE ....) 
UNION
(SELECT unique, dates, amt, tbl FROM ..... WHERE ....) ORDER BY dates ASC

如果可以通过 MYsql 完成那就太好了,如果不能,PHP/VB.net 中的答案也将被接受。感谢所有帮助。谢谢

最佳答案

您可以通过使用 group_concat 来获取所有表名称,从而将查询包装在一个组中。例如

DROP TABLE IF EXISTS T1,T2,T3;

CREATE TABLE T1(UNIQUEID INT, DT DATE, AMT INT);
CREATE TABLE T2(UNIQUEID INT, DT DATE, AMT INT);
CREATE TABLE T3(UNIQUEID INT, DT DATE, AMT INT);

INSERT INTO T1 VALUES(1,'2017-01-01',10),(1,'2017-02-01',10),(2,'2017-01-01',20);
INSERT INTO T2 VALUES(1,'2017-01-01',10),(3,'2017-01-01',10),(4,'2017-01-01',20);
INSERT INTO T3 VALUES(2,'2017-01-01',10),(5,'2017-01-01',10),(4,'2017-01-01',20);

SELECT UNIQUEID,DT,SUM(AMT) SUMAMT,SUBSTR(GROUP_CONCAT(TNAME),1,2)
FROM
(
SELECT 'T1' TNAME, UNIQUEID, DT,AMT FROM T1
UNION ALL
SELECT 'T2' TNAME, UNIQUEID, DT,AMT FROM T2
UNION ALL
SELECT 'T3' TNAME, UNIQUEID, DT,AMT FROM T3
) S
GROUP BY UNIQUEID,DT;

结果

+----------+------------+--------+---------------------------------+
| UNIQUEID | DT | SUMAMT | SUBSTR(GROUP_CONCAT(TNAME),1,2) |
+----------+------------+--------+---------------------------------+
| 1 | 2017-01-01 | 20 | T1 |
| 1 | 2017-02-01 | 10 | T1 |
| 2 | 2017-01-01 | 30 | T1 |
| 3 | 2017-01-01 | 10 | T2 |
| 4 | 2017-01-01 | 40 | T3 |
| 5 | 2017-01-01 | 10 | T3 |
+----------+------------+--------+---------------------------------+
6 rows in set (0.00 sec)

如果您愿意,可以订购 Group_concat,如果您省略子字符串,则可以打印所有表名称。不值得使用不带 all 子句的 union 语句,因为 mysql 会尝试删除重复数据,而您并不真正想要这样做。

关于php - MYsql 与存在语句的联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46598185/

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