[英]mysql: what does 'r' mean?
我一直在查看一些代碼並在查詢中反復看到字母'r',我以前從未見過它。 我不是mysql大師,在這種情況下無法在網上找到真正有意義的參考資料。
示例查詢:
SELECT * FROM database.table r WHERE column = 'whatever' AND otherColumn = 'whenever' ORDER BY id, name
這實際上意味着表格從其長格式別名到字母/符號'r'。
在你的情況下它是一個紅色的鯡魚 ,因為在查詢的任何地方都沒有使用'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
BTW,像這樣的SQL代碼是我傾向於使用關鍵字AS突出我是別名的事實的原因。 所以FROM子句看起來像這樣: FROM database.table AS r
至於未使用的別名正在做什么,這是一個很好的問題。 我猜它是從一些使用別名的舊查詢中剪切,復制和粘貼的,但是當它變得不必要時,沒有人費心去除它。
r
是您可以為表提供的別名。 您可以稍后通過該別名引用表列,例如r.column1
這是一個表別名。 如果要連接兩個具有重復列名的表,則可以通過說some_table.id消除歧義歧義,表別名允許您只鍵入r.id.
這是別名。 這意味着:我們必須使用r
now而不是database.table
。
我們可以使用r.column
但如果沒有歧義,我們仍然可以使用just 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
看起來像是一個表別名,省略了AS
關鍵字。 在示例查詢中,別名是不必要的,因為只引用了一個表,並且從不使用別名。
tbl_name [[AS] alias] [index_hint_list]
的相關語法在MySQL文檔中指定為tbl_name [[AS] alias] [index_hint_list]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.