gpt4 book ai didi

mysql - 多查询 SQL 压缩为一个结果

转载 作者:行者123 更新时间:2023-11-29 15:09:07 25 4
gpt4 key购买 nike

我的网络应用程序需要从我的数据库中获取这些信息,我只能为整个数据库生成这些信息,并使用许多查询填充一个全新的表。谁能向我建议一个返回与此填充表完全相同的结果的查询?

首先,这是包含信息的两个表。

CREATE OR REPLACE TABLE AS_Event(
AS_Id INT,
geneAbsentId VARCHAR(15),
genePresentId VARCHAR(15),
)ENGINE=INNODB;

CREATE OR REPLACE TABLE AS_ChoiceSupport(
AS_Id INT,
GeneId VARCHAR(15),
ESTId VARCHAR(20),
LibraryId INT,
)ENGINE=INNODB;

我已将其简化为我们需要的信息。 geneAbsentId 和genePresentId(或AS_Choice)指向与AS_ChoiceSupport 中的GeneId 相同的表。每个事件中的每个 AS_Choice 可以有 >= 0 AS_ChoiceSupport 行。

现在,这是我正在创建的新表,但我需要它作为单个查询。

CREATE TABLE AS_Support_Count(
AS_Id INT,
gaCount INT,
gpCount INT,
PRIMARY KEY(AS_Id),
FOREIGN KEY(AS_Id) REFERENCES AS_Event(AS_Id) ON UPDATE CASCADE ON DELETE CASCADE
)ENGINE=INNODB;

INSERT INTO AS_Support_Count(AS_Id) SELECT AS_Id FROM AS_Event

CREATE OR REPLACE VIEW TEMP AS SELECT e.AS_Id, COUNT(e.genePresentId) AS gpCount FROM AS_Event e, AS_ChoiceSupport c WHERE (e.AS_Id = c.AS_Id) AND e.genePresentId = c.GeneId GROUP BY e.AS_Id

UPDATE AS_Support_Count a, TEMP t
SET a.gpCount = t.gpCount
WHERE a.AS_Id = t.AS_Id

UPDATE AS_Support_Count
SET gpCount = 0
WHERE gpCount IS NULL

CREATE OR REPLACE VIEW TEMP AS SELECT e.AS_Id, COUNT(e.geneAbsentId) AS gaCount FROM AS_Event e, AS_ChoiceSupport c WHERE (e.AS_Id = c.AS_Id) AND e.geneAbsentId = c.GeneId GROUP BY e.AS_Id

UPDATE AS_Support_Count a, TEMP t
SET a.gaCount = t.gaCount
WHERE a.AS_Id = t.AS_Id

UPDATE AS_Support_Count
SET gaCount = 0
WHERE gaCount IS NULL

我需要将其压缩为单个查询的原因是我有时需要根据库 ID 获取事件信息。即我需要知道 AS_Event x 有多少个来自 LibraryId y 的 AS_ChoiceSupports。

我知道这是一个大问题,所以我会将 PokerStars 上的 5 美元转给给我正确答案的人。

最佳答案

我从在线教程中发现了如何转置数据 link text

这是我提出的查询

SELECT
COUNT(CASE WHEN e.genePresentId = c.GeneId THEN c.LibraryId ELSE NULL END) AS 'gpCount',
COUNT(CASE WHEN e.geneAbsentId = c.GeneId THEN c.LibraryId ELSE NULL END) AS 'gaCount'
FROM
AS_Event e, AS_ChoiceSupport c
WHERE e.AS_Id = c.AS_Id AND c.LibraryId = ? <sql:param value="${LibraryId}"/>
GROUP BY
c.AS_Id
ORDER BY
e.AS_Id

扑克之星奖励大减价。但是,如果您有更好的答案,请向社区提供。

关于mysql - 多查询 SQL 压缩为一个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1329774/

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