반응형
SQL에서 결과를 제외한 OR을 사용하여 쿼리
다음 쿼리를 수행합니다.
SELECT SQL_CALC_FOUND_ROWS uniqueid, start
FROM sometable
LEFT JOIN log ON
sometable.uniqueid = log.anid AND (log.info='someinfo' or log.info='otherinfo')
WHERE `moreInfo` = 1 AND `type` = 'myType'
AND (`channel` LIKE 'ACHANNEL/%' or `channel` LIKE 'OTHERCHANNEL\/%')
AND `start` > '2019-01-22 00:00:00' AND `start` < '2019-01-22 23:59:59'
GROUP BY uniqueid
그러나 이 부품은 작동하지 않는 것 같습니다.
AND (`channel` LIKE 'ACHANNEL%' or `channel` LIKE 'OTHERCHANNEL%')
ACHANNEL/로 시작하는 모든 채널 또는 OTHERCHANNEL/로 시작하는 채널은 항상 OTHERCHANNEL/로 시작하는 결과를 제공합니다.
수술실이 작동하지 않는 것 같아요
도움이 필요하신가요?
질의는 원하는 대로 수행되어야 합니다.행이 누락된 경우 패턴이 실제로 일치하지 않을 수 있습니다.
몇 가지 제안이 있습니다.
SELECT SQL_CALC_FOUND_ROWS t.uniqueid, MIN(start) as start
FROM sometable t LEFT JOIN
log l
ON t.uniqueid = l.anid AND l.info in ('someinfo', 'otherinfo')
WHERE t.`moreInfo` = 1 AND
t.`type` = 'myType' AND
(t.`channel` LIKE 'ACHANNEL/%' or t.`channel` LIKE 'OTHERCHANNEL/%') AND
t.`start` > '2019-01-22' AND `start` < '2019-01-23'
GROUP BY t.uniqueid;
모든 컬럼명을 수식하고 있으며,의 모든 컬럼이 참조하는 것으로 가정하고 있습니다.WHERE
언급하다sometable
가 아니라log
. 그렇지 않으면LEFT JOIN
로 바뀌게 될 것이다.INNER JOIN
.
주의:
- 모든 열은 테이블 별칭을 사용한다는 의미입니다.쿼리에 두 개 이상의 테이블 참조가 있는 경우 강력히 권장합니다.
- 날짜 계산이 단순화되었습니다.
- 와의 다중 비교
OR
를 사용하여 단순화되었다IN
. - '베어'
start
열이 집계 함수로 전환되었습니다. - 이스케이프 캐릭터
\
가 삭제되었습니다.슬래시가 있는 이스케이프 문자는 필요 없습니다.
첫 번째 조건을 벗어나지 못했습니다.
AND (channel LIKE 'ACHANNEL\/%' or channel LIKE 'OTHERCHANNEL\/%')
언급URL : https://stackoverflow.com/questions/54311866/query-with-or-excluding-results-in-sql
반응형
'programing' 카테고리의 다른 글
System.current Time Millis()는 UTC 시간을 반환합니까? (0) | 2022.10.08 |
---|---|
MySQL에서 저장 프로시저/함수 정의 보기 (0) | 2022.10.08 |
JSON은 Infinity와 NaN을 생략했습니다. ECMAScript에서 JSON 상태는? (0) | 2022.10.08 |
jQuery에서 체크박스가 켜져 있는지 여부를 확인하려면 어떻게 해야 합니까? (0) | 2022.10.08 |
JavaScript를 사용하여 스판 요소의 텍스트를 변경하려면 어떻게 해야 합니까? (0) | 2022.10.02 |