我在具有相同值的UNIONed select
语句中发现了一种非常奇怪的行为。
试图在网上找到发生的事情,但是不知道如何用短语搜索这个问题,需要解释,它如下:
测试1:
SELECT
ID, SUM(AMT) AS AMT
FROM
(
SELECT 1 AS ID, 100 AS AMT FROM DUAL UNION
SELECT 1 AS ID, 100 AS AMT FROM DUAL UNION
SELECT 1 AS ID, 100 AS AMT FROM DUAL UNION
SELECT 1 AS ID, 100 AS AMT FROM DUAL
)
GROUP BY ID;
测试2:
SELECT 1 AS ID, 100 AS AMT FROM DUAL UNION
SELECT 1 AS ID, 100 AS AMT FROM DUAL UNION
SELECT 1 AS ID, 100 AS AMT FROM DUAL UNION
SELECT 1 AS ID, 100 AS AMT FROM DUAL;
所有这些select语句都给出了相同的结果:
因此,假设我正在编写一个动态代码,以便在我的某个应用程序中运行时生成并执行,并且恰好代码变为如上所述!如何使这个select语句有效?
答案 0 :(得分:1)
您可以尝试使用UNION ALL
SELECT
ID, SUM(AMT) AS AMT
FROM
(
SELECT 1 AS ID, 100 AS AMT FROM DUAL UNION ALL
SELECT 1 AS ID, 100 AS AMT FROM DUAL UNION ALL
SELECT 1 AS ID, 100 AS AMT FROM DUAL UNION ALL
SELECT 1 AS ID, 100 AS AMT FROM DUAL
)
GROUP BY ID;
答案 1 :(得分:1)
请尝试以下
SELECT 1 AS ID, 100 AS AMT FROM DUAL UNION all
SELECT 1 AS ID, 100 AS AMT FROM DUAL UNION all
SELECT 1 AS ID, 100 AS AMT FROM DUAL UNION all
SELECT 1 AS ID, 100 AS AMT FROM DUAL;