[SQL] 쿼리를 제외하고 사용하는 경우 오류
SQL쿼리를 제외하고 사용하는 경우 오류
이 쿼리는 작동합니다 :
mysql> SELECT s.sno FROM students s;
+------+
| sno |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+------+
10 rows in set (0.00 sec)
이 쿼리는 또한 작동합니다 :
mysql> SELECT t.sno FROM take t WHERE t.cno = 'CS112';
+------+
| sno |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
+------+
4 rows in set (0.00 sec)
하지만이 쿼리 :
SELECT s.sno FROM students s
EXCEPT
SELECT t.sno FROM take t WHERE t.cno = 'CS112';
오류와 함께 실패합니다 :
mysql> SELECT s.sno FROM students s
-> EXCEPT
-> SELECT t.sno FROM take t WHERE t.cno = 'CS112';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use n
ear 'EXCEPT
SELECT t.sno FROM take t WHERE t.cno = 'CS112'' at line 2
어떻게 내가 여기 잘못 한거야?
해결법
-
==============================
1.나는 구문을 제외하고 MySQL의 지원을 믿지 않는다. 가입 NOT IN 또는 LEFT 사용해보십시오 :
나는 구문을 제외하고 MySQL의 지원을 믿지 않는다. 가입 NOT IN 또는 LEFT 사용해보십시오 :
SELECT s.sno FROM students s WHERE s.sno NOT IN ( SELECT t.sno FROM take t WHERE t.cno = 'CS112' );
또는
SELECT s.sno FROM students s LEFT JOIN take t ON s.sno = t.sno WHERE IFNULL(t.cno, '') != 'CS112'
최신 정보
나는 그런대로 데이터를 조롱하고 올바르게 5-10 반환합니다 :
create temporary table temp_students (sno int) insert into temp_students values (1) insert into temp_students values (2) insert into temp_students values (3) insert into temp_students values (4) insert into temp_students values (5) insert into temp_students values (6) insert into temp_students values (7) insert into temp_students values (8) insert into temp_students values (9) insert into temp_students values (10) create temporary table temp_take (sno int, cno varchar(50)) insert into temp_take values (1, 'CS112') insert into temp_take values (2, 'CS112') insert into temp_take values (3, 'CS112') insert into temp_take values (4, 'CS112') SELECT s.sno FROM temp_students s LEFT JOIN temp_take t ON s.sno = t.sno WHERE IFNULL(t.cno, '') != 'CS112'
-
==============================
2.질문:
질문:
SQL 뿐인 예
SELECT s.sno FROM students s WHERE NOT EXISTS (SELECT 0 FROM take t WHERE t.sno = s.sno AND t.cno = 'CS112')
-
==============================
3.이 시도.
이 시도.
SELECT s.sno FROM students s LEFT JOIN take t ON t.sno = s.sno AND t.cno = 'CS112' WHERE t.sno IS NULL;
http://www.sqlfiddle.com/#!2/a7430/7
from https://stackoverflow.com/questions/16092353/error-when-using-except-in-a-query by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 쿼리에 대한 피벗 CASE WHEN를 사용하여 열을 (0) | 2020.04.05 |
---|---|
[SQL] 안전하게 이름 바꾸기 테이블 일련 기본 키 열을 사용하여 (0) | 2020.04.05 |
[SQL] SUM에 의해 MySQL의 그룹 (0) | 2020.04.05 |
[SQL] NVARCHAR (최대)의 경우 난 단지 SQL에서 4000 문자는 무엇입니까? (0) | 2020.04.05 |
[SQL] MySQL의에 제한을 사용하여 여러 행을 업데이트? (0) | 2020.04.04 |