반응형
WHEREIN에 SELECT결과를 사용하여 Alias.
나는 그것은 내가 SELECTWHEREIN은 사용하는 의문이 있다.여기에 쿼리가:
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절의"tunidade_id SELECT"성명이 효과가 있다.방법이 있는 별칭, 그래서 이걸 한번만 공연을 이번 SELECT의 결과물을 이용하나요?(그리고 그것은 usefull?)
감사합니다.
MariaDB 10.2려면 여러분은 이 목적으로common-table 표현을 사용할 수 있다.
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
그것이 당신 눈에 띄는 성능 향상-나는 최선의 방법을 찾기 위해입니다; 하지만 적어돈 쿼리는 더 계속할 수 있는 이 방법 같군요
없었지만, 저의 이해에 이와 같은 일을 봐야 합니다. 확인되지 않고 있다.
SELECT tville_id, tville_nom, tville_etat
FROM TAB_ZONE
INNER JOIN TAB_VILLES ON tville_id = tzone_cidade
JOIN (SELECT tunidade_id FROM TAB_UNIDADE WHERE tunidade_parent = 1 UNION SELECT 1) x on x.tunidade_id in (tzone_unidade1, tzone_unidade2, tzone_unidade3)
ORDER BY tville_etat, tville_nom
그렇지 않다면 잘못된 아래 조건들을 하나로 병합할 수 있다.
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)
같은 것려면
OR (tzone_unidade1,tzone_unidade2,tzone_unidade3) IN (SELECT tunidade_id FROM TAB_UNIDADE WHERE tunidade_parent = 1)
더 나은단에 걸쳐 배열 splay지 않는 것이다.대신에 다른 테이블에 여러줄로 이루어져 있다.그러한으로, 반복 쿼리, CTEs, 성능 문제 등을 피할 수 있
언급URL:https://stackoverflow.com/questions/43903001/alias-for-using-select-result-in-where-in
반응형
'programing' 카테고리의 다른 글
toString()과 hashCode()가 오버라이드 되었을 때 자바에서 객체의 "객체 참조"를 얻으려면 어떻게 해야 합니까? (0) | 2022.09.19 |
---|---|
기본 Vue 도움말: 구성 요소의 JS 개체 값 액세스 (0) | 2022.09.19 |
Larabel에서 새로운 애플리케이션 키를 생성하는 시기 (0) | 2022.09.19 |
Java의 여러 줄 툴팁? (0) | 2022.09.19 |
pip 설치에서 "X용 빌딩 휠 실패"가 의미하는 바는 무엇입니까? (0) | 2022.09.19 |