Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我不能使用INTERSECT操作符_Mysql_Sql_Select_Where Clause_Intersect - Fatal编程技术网

Mysql 我不能使用INTERSECT操作符

Mysql 我不能使用INTERSECT操作符,mysql,sql,select,where-clause,intersect,Mysql,Sql,Select,Where Clause,Intersect,我正在尝试解决此练习: '从电台查询以元音(即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

我正在尝试解决此练习:

'从电台查询以元音(即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

我做错了什么?还有什么其他方法可以解决此练习?

您可以使用
加入

SELECT CITY1 AS CITY
FROM
(
    SELECT CITY AS CITY1
    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'
) AS T1 JOIN (
    SELECT CITY AS CITY2
    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'
) AS T2 ON CITY1 = CITY2

您可以使用
join

SELECT CITY1 AS CITY
FROM
(
    SELECT CITY AS CITY1
    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'
) AS T1 JOIN (
    SELECT CITY AS CITY2
    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'
) AS T2 ON CITY1 = CITY2
查询
STATION
中的
CITY
名称列表,这些名称的第一个和最后一个字符都是元音

你似乎把这件事复杂化了。据我所知,您只需要一个
where
子句来过滤表一次,正则表达式就可以实现这一点:

select city
from station
where city regexp '^[aeiou].*[aeiou]$'
模式描述了以wovel开头和结尾的字符串(
^
表示字符串的开头,
$
表示字符串的结尾)

如果表中有重复的
城市
,则改用
选择与…不同的城市

如果要使用
left()
right()

查询
STATION
中的
CITY
名称列表,这些名称的第一个和最后一个字符都是元音

你似乎把这件事复杂化了。据我所知,您只需要一个
where
子句来过滤表一次,正则表达式就可以实现这一点:

select city
from station
where city regexp '^[aeiou].*[aeiou]$'
模式描述了以wovel开头和结尾的字符串(
^
表示字符串的开头,
$
表示字符串的结尾)

如果表中有重复的
城市
,则改用
选择与…不同的城市

如果要使用
left()
right()


MySQL不支持INTERSECT。您应该学习使用括号表示布尔表达式:
其中(左(城市,1)='A'或…)和(右(城市,1)='A'或…)
。或者按照GMB的建议使用正则表达式。MySQL不支持INTERSECT。您应该学会对布尔表达式使用括号:
WHERE(左(城市,1)='A'或…)和(右(城市,1)='A'或…
。或者按照GMB的建议使用正则表达式。