【发布时间】:2020-11-11 11:42:33
【问题描述】:
我正在尝试创建一个带有 2 个选择的交叉连接的过程。在第一个选择中,我选择vitamin_name 包含不为空的extreme 的价格值,在第二个选择中,我选择vitamin_name 不包含不为空的extreme 的价格值。我交叉加入了这些选择,但我在第 9 行不断收到语法错误。我不知道我在第 9 行做错了什么。应该怎么做?
table = vitamin
+----------------+-------+
| vitamin_name | price |
+----------------+-------+
| extreme pill 1 | 10 |
| pill 1 | 5 |
| extreme pill 2 | 20 |
| pill 2 | 10 |
+----------------+-------+
我的代码
BEGIN
SELECT sel_extreme.ext, sel_regular.reg FROM
(SELECT sel.extreme as 'ext' FROM
(SELECT CASE WHEN vitamin_name LIKE 'extreme%' THEN price END AS 'extreme'
FROM vitamin) AS sel
WHERE sel.extreme IS NOT NULL;) AS sel_extreme <-- line 9
CROSS JOIN
(SELECT sel.regular as 'reg' FROM
(SELECT CASE WHEN vitamin_name NOT LIKE 'extreme%' THEN price END AS 'regular'
FROM vitamin) AS sel
WHERE sel.regular IS NOT NULL;) AS sel_regular;
END
【问题讨论】:
-
删除SQL代码中间的所有
;。AS sel_regular;中只有一个是合法的。 -
我照你说的做了,还是不行..
-
也许您尝试在复合语句(函数、过程、触发器等)中使用 BEGIN-END?
-
还有一个错误 - 您在别名上使用了错误的引号字符(
AS 'extreme'、AS 'regular'、as 'ext'、as 'reg'),必须使用反引号而不是单引号。 -
去掉多余的分号。