簡體   English   中英

mysql:'r'是什么意思?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM