MySQL:缺少别名

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

下面是sqlfiddle:

那么,谁能告诉我我把别名忘在哪里了

我到处都查过了,但似乎找不到哪里错了

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变量,不需要名称。