gpt4 book ai didi

mysql - 在 WHERE IN 中使用 SELECT 结果的别名

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

我有一个使用 WHERE IN SELECT 的查询。这是查询:

SELECT tville_id, tville_nom, tville_etat
FROM TAB_ZONE
INNER JOIN TAB_VILLES ON tville_id = tzone_cidade
WHERE tzone_unidade1 = 1
OR tzone_unidade2 = 1
OR tzone_unidade3 = 1
OR tzone_unidade1 IN (SELECT tunidade_id FROM TAB_UNIDADE WHERE tunidade_parent = 1)
OR tzone_unidade2 IN (SELECT tunidade_id FROM TAB_UNIDADE WHERE tunidade_parent = 1)
OR tzone_unidade3 IN (SELECT tunidade_id FROM TAB_UNIDADE WHERE tunidade_parent = 1)
ORDER BY tville_etat, tville_nom

它有效,但如您所见,我在 WHERE 部分中使用了三次“SELECT tunidade_id”语句。有没有办法使用这个 SELECT 的结果作为别名,所以只执行一次? (它有用吗?)

谢谢

最佳答案

MariaDB 10.2你可以使用 common-table expressions对于this purpose .

WITH cte_tunidade AS (SELECT tunidade_id FROM TAB_UNIDADE WHERE tunidade_parent = 1)
SELECT tville_id, tville_nom, tville_etat
FROM TAB_ZONE
INNER JOIN TAB_VILLES ON tville_id = tzone_cidade
WHERE tzone_unidade1 = 1
OR tzone_unidade2 = 1
OR tzone_unidade3 = 1
OR tzone_unidade1 IN (SELECT * FROM cte_tunidade)
OR tzone_unidade2 IN (SELECT * FROM cte_tunidade)
OR tzone_unidade3 IN (SELECT * FROM cte_tunidade)
ORDER BY tville_etat, tville_nom

它是否会给您带来显着的性能提升——我想最好的方法就是尝试;但至少这样可以更好地维护查询。

关于mysql - 在 WHERE IN 中使用 SELECT 结果的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43903001/

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