我一直在經歷一些代碼,並在查詢中反覆看到字母'r',而且我從未見過它。我不是mysql大師,在這種情況下無法在網絡上找到真正有意義的參考。mysql:'r'是什麼意思?
樣品查詢:
SELECT * FROM database.table r WHERE column = 'whatever' AND otherColumn = 'whenever' ORDER BY id, name
我一直在經歷一些代碼,並在查詢中反覆看到字母'r',而且我從未見過它。我不是mysql大師,在這種情況下無法在網絡上找到真正有意義的參考。mysql:'r'是什麼意思?
樣品查詢:
SELECT * FROM database.table r WHERE column = 'whatever' AND otherColumn = 'whenever' ORDER BY id, name
這實際上意味着該表被從其長表單替換爲字母/符號'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代碼的原因是我傾向於使用關鍵字才能突出,我走樣事實。所以FROM子句看起來像這樣:FROM database.table AS r
至於什麼是未使用的別名正在做什麼有一個很好的問題。我的猜測是,它被剪切,複製並粘貼了一些使用了別名的舊查詢,但是當它變得沒有必要時,從來沒有人打算刪除它。
r
是一個別名,你可以給一個表。您可以稍後通過該別名參考表列,例如r.column1
這是一個表別名。如果你加入兩個重複列名的表,你可以通過說some_table.id來消除歧義,表別名允許你輸入r.id。
這是一個別名。這意味着:我們必須現在使用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
不僅「你可以」使用'r',你「必須」只使用'r'。別名爲'r'的原始引用不再可用。 – RichardTheKiwi 2011-04-04 22:28:49
@Richard aka cyberkiwi:好吧,我會死的!你是對的。從來不知道那個。 – 2011-04-04 22:35:05
@Richard:thnx將'can'更正爲'must' – 2011-04-04 22:40:47
看起來像我的表別名,省略了AS
關鍵字。在示例查詢中,別名是不必要的,因爲只有一個表正被引用,並且別名從不使用。
table_reference的相關語法在MySQL documentation中指定爲tbl_name [[AS] alias] [index_hint_list]
。
它看起來就像是'database.table'的別名,也可以用''database.table AS r'來完成,這通常需要你輸入'r.column'或'r。 id',但這不是在這個例子中的情況,所以我不知道。 – 2011-04-04 22:28:34