gpt4 book ai didi

sql - 有没有比使用子查询更好的方法来编写此 SQL SELECT 语句?

转载 作者:行者123 更新时间:2023-12-04 21:35:38 26 4
gpt4 key购买 nike

我有这个问题:

SELECT A, B, C
FROM ( SELECT
lla.id as A,
max(decode(lla.attrid, 2, lla.valstr, null)) as B,
max(decode(lla.attrid, 3, lla.valstr, null)) as C
FROM
llattrdata lla,
llattrdata lla2
WHERE
lla.id = lla2.id
GROUP BY lla.id)
WHERE C = "Yes"

有更好的方法吗?我尝试使用 HAVING 子句,但无法让它对列 C="Yes"起作用。提前致谢。

最佳答案

我会让你变成一个 secret 。你所拥有的没有任何问题。所以不要满足重写它的需要。

SELECT A, B, C
FROM ( SELECT
lla.id as A,
max(decode(lla.attrid, 2, lla.valstr, null)) as B,
max(decode(lla.attrid, 3, lla.valstr, null)) as C
FROM
llattrdata lla,
llattrdata lla2
WHERE
lla.id = lla2.id
GROUP BY lla.id)
WHERE C = 'Yes'

与 :

的性能相同
SELECT 
lla.id as A,
max(decode(lla.attrid, 2, lla.valstr, null)) as B,
max(decode(lla.attrid, 3, lla.valstr, null)) as C
FROM
llattrdata lla,
llattrdata lla2
WHERE
lla.id = lla2.id
GROUP BY lla.id
HAVING max(decode(lla.attrid, 3, lla.valstr, null)) = 'Yes';

避免使用内联 View 不会提高性能。以对您而言更易读的那个为准。

关于sql - 有没有比使用子查询更好的方法来编写此 SQL SELECT 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13585508/

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