MySQL:缺少别名
下面是sqlfiddle: 那么,谁能告诉我我把别名忘在哪里了 我到处都查过了,但似乎找不到哪里错了MySQL:缺少别名,mysql,sql,alias,Mysql,Sql,Alias,下面是sqlfiddle: 那么,谁能告诉我我把别名忘在哪里了 我到处都查过了,但似乎找不到哪里错了 SELECT description FROM ForgeRock WHERE id=1 UNION SELECT CONCAT( version(), (SELECT (@) FROM ( SELECT(@:=0x00), (SELECT @ FROM
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())
首先你忘了一个括号。我使用格式化您的查询 如果这不能解决问题,请告诉我
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()
)
)
它藏起来了。其中有一些派生表有点难以跟踪,但每次执行“选择[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())
这应该是MySQL吗?你的fiddle链接是emptyNo。不过谢谢你。你能告诉我这个派生表是如何工作的吗?第一次看到这么多没有变量名的
@
,老实说,我也没见过(虽然我主要是Oracle人,所以可能在这里很常见,我只是不知道)。它看起来像是在将产品名称转换为十六进制形式,但我从未见过这样做,所以我不确定。在任何情况下,使用@时,当我返回并弄乱发布的SQL Fiddle OP时,我可以向用户定义的变量添加名称并返回相同的结果。因此,我认为它只接受只有一个va变量,不需要名称。