【发布时间】:2020-10-11 00:35:35
【问题描述】:
我正在尝试解决这个问题:
'从 STATION 查询以元音(即 a、e、i、o 和 u)作为首尾字符的城市名称列表。您的结果不能包含重复项。'
我尝试使用这样的 INTERSECT 运算符解决它:
SELECT CITY
FROM STATION
WHERE LEFT(CITY, 1) = 'A' OR LEFT(CITY, 1) = 'O'
OR LEFT(CITY, 1) = 'E' OR LEFT(CITY, 1) = 'I' OR
LEFT (CITY, 1) OR LEFT(CITY, 1) = 'U'
INTERSECT
SELECT CITY
FROM STATION
WHERE RIGHT(CITY, 1) = 'A' OR RIGHT(CITY, 1) = 'O'
OR RIGHT(CITY, 1) = 'E' OR RIGHT(CITY, 1) = 'I' OR
RIGHT (CITY, 1) OR RIGHT(CITY, 1) = 'U';
但我收到以下错误消息:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTERSECT
SELECT CITY
FROM STATION
WHERE RIGHT(CITY, 1) = 'A' OR RIGHT(CITY, 1)' at line
我做错了什么,我还有什么其他方法可以解决这个问题?
【问题讨论】:
-
MySQL 不支持 INTERSECT。
-
你应该学会在布尔表达式中使用括号:
WHERE (LEFT(CITY, 1) = 'A' OR ...) AND (RIGHT(CITY, 1) = 'A' OR ...)。或者按照 GMB 的建议使用正则表达式。
标签: mysql sql select where-clause intersect