gpt4 book ai didi

mysql - 具有多个 SELECT 的 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 01:26:55 25 4
gpt4 key购买 nike

我要在我的应用程序中显示表格,我想要的是显示表格,其中一行具有通过以下方式计算的值:

SELECT SUM (val) FROM report_orbiting_vals rov 
WHERE rov.orbiting_group_type_id = ? AND rov.orbiting_group_indice_id = ?

对于第一行,我想显示 4 个值,每个值都如下所示:

SELECT SUM (val) FROM report_orbiting_vals rov 
WHERE rov.orbiting_group_type_id = (1,2,3,4) AND rov.orbiting_group_indice_id = 1

其中 (1,2,3,4) 是 4 个不同的 SELECT 语句,对应的 (1,2,3,4) 值。在下一行中,我将更改 rov.orbiting_group_indice_id = 2 并希望使用相同的 rov.orbiting_group_type_id 值 (1,2,3,4)。

我是 SQL 的新手,我想问一下,如何用那个 valeus 来呈现表格?
所以它应该是像 column1-value, column2-value, column3-value, column4-value 这样的东西。

谢谢!

更新:我想要如下内容:

SELECT 
(SELECT
SUM(val)
FROM
report_orbiting_vals rov
WHERE
rov.orbiting_group_type_id = 1
AND rov.orbiting_group_indice_id = 1) as colOne,
(SELECT
SUM(val)
FROM
report_orbiting_vals rov
WHERE
rov.orbiting_group_type_id = 1
AND rov.orbiting_group_indice_id = 2) as colTwo,
(SELECT
SUM(val)
FROM
report_orbiting_vals rov
WHERE
rov.orbiting_group_type_id = 1
AND rov.orbiting_group_indice_id = 3) as colThree,
(SELECT
SUM(val)
FROM
report_orbiting_vals rov
WHERE
rov.orbiting_group_type_id = 1
AND rov.orbiting_group_indice_id = 4) as colFourth

不幸的是,上面的代码不起作用,它会产生一个错误,但我希望你现在明白我想要什么。

更新 (2):

我尝试了下面提供的 2 个解决方案,第一个:

SELECT
(SELECT
SUM(val)
FROM
report_orbitings rov
WHERE
rov.orbiting_group_type_id = 1
AND rov.orbiting_group_indice_id = 1) as colOne,
(SELECT
SUM(val)
FROM
report_orbitings rov
WHERE
rov.orbiting_group_type_id = 1
AND rov.orbiting_group_indice_id = 2) as colTwo,
(SELECT
SUM(val)
FROM
report_orbitings rov
WHERE
rov.orbiting_group_type_id = 1
AND rov.orbiting_group_indice_id = 3) as colThree,
(SELECT
SUM(val)
FROM
report_orbitings rov
WHERE
rov.orbiting_group_type_id = 1
AND rov.orbiting_group_indice_id = 4) as colFourth
FROM report_orbitings rv

输出:

enter image description here

第二个:

SELECT SUM(CASE WHEN rov.orbiting_group_type_id = 1 THEN val ELSE 0 END) as type1_sum,
SUM(CASE WHEN rov.orbiting_group_type_id = 2 THEN val ELSE 0 END) as type2_sum,
SUM(CASE WHEN rov.orbiting_group_type_id = 3 THEN val ELSE 0 END) as type3_sum,
SUM(CASE WHEN rov.orbiting_group_type_id = 4 THEN val ELSE 0 END) as type4_sum
FROM report_orbitings rov
WHERE rov.orbiting_group_type_id in (1,2,3,4)
AND rov.orbiting_group_indice_id = 1

输出:

enter image description here

明确地说,我想承认,我的数据库还没有数据,只有结构。不过,我认为第二个代码可以工作,而第一个代码不能,因为它输出 [Null] 而不是什么都不输出。为什么这两个例子有区别?它应该产生相同的输出。

最佳答案

不确定我是否遵循,要么你想要它们的总和,那么你需要使用 IN() :

SELECT SUM (val) FROM report_orbiting_vals rov
WHERE rov.orbiting_group_type_id in (1,2,3,4)
AND rov.orbiting_group_indice_id = 1

或者您希望在不同的列中计算每一项的总和:

SELECT SUM(CASE WHEN rov.orbiting_group_type_id = 1 THEN val ELSE 0 END) as type1_sum,
SUM(CASE WHEN rov.orbiting_group_type_id = 2 THEN val ELSE 0 END) as type2_sum,
SUM(CASE WHEN rov.orbiting_group_type_id = 3 THEN val ELSE 0 END) as type3_sum,
SUM(CASE WHEN rov.orbiting_group_type_id = 4 THEN val ELSE 0 END) as type4_sum
FROM report_orbiting_vals rov
WHERE rov.orbiting_group_type_id in (1,2,3,4)
AND rov.orbiting_group_indice_id = 1

关于mysql - 具有多个 SELECT 的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39445258/

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