반응형
많은 정보를 반환하고 조인을 사용하여 두 테이블을 조인하는 쿼리가 있으며 완벽하게 작동합니다.
하지만 티켓이라는 필드가 있는데, 사용 가능한 시간이 있는지 확인하고 하나라도 있으면 1로 설정하고 그렇지 않으면 0으로 설정합니다.
SELECT
name,poster,sid,tickets = (IF SELECT id FROM times WHERE shows.tid=times.tid LIMIT 1,
if value returned set to 1, otherwise set to 0)
FROM shows JOIN show_info ON (id) WHERE sid=54 order by name ASC
분명히 그것은 올바른 MySQL 진술은 아니지만 내가 찾고있는 것에 대한 예를 제공 할 것입니다.
이것이 가능한가? 아니면 결과를 통해 루프를 수행하기 위해 첫 번째 선택을 수행하고 두 번째 선택을 수행하고 그런 방식으로 값을 설정해야합니까? 아니면 더 나은 성능이 현명합니까?
해결 방법
EXISTS
를 살펴 보겠습니다. 대부분의 경우 where 문과 일치하는 모든 항목을 COUNT
하는 것보다 훨씬 빠릅니다. 그 말로. 쿼리는 다음과 같아야합니다.
SELECT
name,
poster,
sid,
(
CASE WHEN EXISTS(SELECT NULL FROM times WHERE shows.tid=times.tid)
THEN 1
ELSE 0
END
)AS tickets
FROM
shows
JOIN show_info ON (id) WHERE sid=54 order by name ASC
참조 페이지 https://stackoverflow.com/questions/10163506
반응형
'MySql' 카테고리의 다른 글
MySQL Windows에서 Apache / PHP / mySQL 구성 .. 거의 완료 (0) | 2021.02.14 |
---|---|
MySQL PHP에서 객체를 문자열로 변환 (0) | 2021.02.14 |
MySQL 까다로운 이중 / 삼중 JOIN (?) (0) | 2021.02.14 |
MySQL Facebook의 profile.php? = id는 어떻게 작동합니까? (0) | 2021.02.14 |
MySQL Python에서 열 이름을 사용하여 SQL 결과 열 값을 검색하는 방법은 무엇입니까? (0) | 2021.02.14 |
댓글