mysql:'r'是什么意思?

Jef*_*eff 4 mysql sql

我一直在查看一些代码并在查询中反复看到字母'r',我以前从未见过它.我不是mysql大师,在这种情况下无法在网上找到真正有意义的参考资料.

示例查询:

SELECT * FROM database.table r
WHERE column = 'whatever'
AND otherColumn = 'whenever'
ORDER BY id, name

Pau*_*sik 8

这实际上意味着表格从其长格式别名到字母/符号'r'.

在你的情况下它是一个红色的鲱鱼,因为在查询的任何地方都没有使用'r'而且它不需要.您的查询不是使用别名的好例子,因为只涉及一个表.如果您连接多个表,则别名变得很方便(尽管不是必需的),以指定您在各种查询子句中引用的表的列.

您只需删除"r"并运行查询即可.

SELECT * FROM database.table r
WHERE column = 'whatever'
AND otherColumn = 'whenever'
ORDER BY id, name
Run Code Online (Sandbox Code Playgroud)

或者直接使用它:(尽管这里多余)

SELECT * FROM database.table r
WHERE r.column = 'whatever'
AND r.otherColumn = 'whenever'
ORDER BY r.id, r.name
Run Code Online (Sandbox Code Playgroud)

BTW,像这样的SQL代码是我倾向于使用关键字AS突出我是别名的事实的原因.所以FROM子句看起来像这样:FROM database.table AS r

至于未使用的别名正在做什么,这是一个很好的问题.我猜它是从一些使用别名的旧查询中剪切,复制和粘贴的,但是当它变得不必要时,没有人费心去除它.


ype*_*eᵀᴹ 6

这是一个别名。这意味着:我们必须使用rnow 而不是database.table

我们可以使用,但只要没有歧义,r.column我们仍然可以使用。column

SELECT * FROM database.table r
WHERE r.column = 'whatever'         --using the alias r
AND otherColumn = 'whenever'        --not using it
ORDER BY id, r.name                 --mixing
Run Code Online (Sandbox Code Playgroud)

  • 您不仅“可以”使用“r”,而且“必须”仅使用“r”。别名为“r”的原始参考不再可用。 (3认同)