我一直在查看一些代码并在查询中反复看到字母“r”,我以前从未见过它。我不是mysql大师,在这种情况下无法在网上找到真正有意义的参考文献。
示例查询:
SELECT * FROM database.table r WHERE column = 'whatever' AND otherColumn = 'whenever' ORDER BY id, name
答案 0 :(得分:8)
这实际上意味着该表从其长格式别名到字母/符号'r'。
在你的情况下它是red herring,因为在查询的任何地方都没有使用'r'而且它不需要。您的查询不是使用别名的好例子,因为只涉及一个表。如果您连接多个表,则别名变得很方便(尽管不是必需的),以指定您在各种查询子句中引用的表的列。
您只需删除“r”并运行查询即可。
SELECT * FROM database.table r
WHERE column = 'whatever'
AND otherColumn = 'whenever'
ORDER BY id, name
或者直接使用它:(虽然这里多余)
SELECT * FROM database.table r
WHERE r.column = 'whatever'
AND r.otherColumn = 'whenever'
ORDER BY r.id, r.name
顺便说一下,这样的SQL代码是我倾向于使用关键字AS突出我是别名的事实的原因。所以FROM子句看起来像这样:FROM database.table AS r
就未使用的别名所做的事情而言,这是一个很好的问题。我猜它是从一些使用别名的旧查询中剪切,复制和粘贴的,但是当它变得不必要时,没有人费心去掉它。
答案 1 :(得分:4)
r
是您可以为表格提供的别名。您可以稍后通过该别名引用表列,例如r.column1
答案 2 :(得分:4)
这是一个表别名。如果您正在连接两个具有重复列名的表,则可以通过说some_table.id来消除歧义歧义,表别名允许您只键入r.id。
答案 3 :(得分:4)
这是别名。这意味着:我们必须现在使用r
代替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
答案 4 :(得分:1)
看起来像是一个表别名,省略了AS
关键字。在示例查询中,别名是不必要的,因为只引用了一个表,并且从不使用别名。
table_reference的相关语法在MySQL documentation中指定为tbl_name [[AS] alias] [index_hint_list]
。