这是sqlfiddle:http://sqlfiddle.com/#!9/dcb16/20113
那么,谁能告诉我在哪里忘记了别名?
我到处检查过,但我似乎无法找到错误的地方。
SELECT description
FROM ForgeRock
WHERE id=1
UNION
SELECT
CONCAT(
version(),
(SELECT (@) FROM (
SELECT(@:=0x00),
(SELECT @
FROM ForgeRock
WHERE @ IN (@:=(CONCAT(@,0x0a,id,0x3a,productName))
)
)x
),version())
答案 0 :(得分:0)
首先你忘记了一个括号。我使用poorsql格式化您的查询
如果那还没解决,请告诉我
SELECT description
FROM ForgeRock
WHERE id = 1
UNION
SELECT CONCAT (
version()
,(
SELECT (@)
FROM (
SELECT (@: = 0x00)
,(
SELECT @
FROM ForgeRock
WHERE @ IN (
@: = (
CONCAT (
@
,0x0A
,id
,0x3A
,productName
)
)
)
) x
)
,version()
)
)
答案 1 :(得分:0)
它藏起来了。你有一些很难跟踪的派生表,但每次你做一个“SELECT [something] FROM(”你可以把它想象成一个需要别名的新表。如果你格式化所有的东西,那么它更容易阅读,你可以看到你的SELECT(@)FROM语句的子查询没有别名。正如Juan指出的那样,你也错过了一个右括号,我在下面添加了。
Select description
FROM ForgeRock
Where id = -1
union
select concat(version(),
(SELECT (@)
FROM (SELECT (@ := 0x00) AS T,
(SELECT @
FROM ForgeRock
WHERE @ IN (@ := (CONCAT(@,
0x0a,
id,
0x3a,
productName)))) x) imthemissingalias),
version())