2016-12-31 257 views
0

我有我沒有寫的代碼。它包含一個特定的SQL查詢。MySQL - 將表設置爲默認值,如果爲空前綴

對於我個人的用途,我想用左加入部分修改它到另一個表,但代碼更改最少。

問題:有幾個不明確的字段。

由於SQL查詢非常大,並且是從原始代碼中的其他函數動態獲取的,所以它使我煩惱於爲所有不明確的字段加前綴。

我的問題是:是否有一種方法只能從我的LEFT JOIN中添加新表,並讓MySQL將沒有前綴的字段視爲表A?

例子:

SELECT id, table2.fieldB FROM table1 LEFT JOIN table2 ON table2.id = id WHERE id > 10; 

凡未經前綴的所有 「ID」 出現次數都與表1。

如果不是,我的其他解決方案是什麼?

基本上,我不想觸及大的情況,因爲它是動態的,來自代碼中的其他函數,我不想在任何地方改變它。

謝謝。

回答

1

您應該限定所有列名。這只是一個很好的做法,它使代碼更易於理解和維護。

也就是說,如果使用USING子句,則不需要限定連接中使用的列名。事實上,你不應該限定這樣的名字。所以,你可以放心地寫:

SELECT id, t2.fieldB 
FROM table1 t1 LEFT JOIN 
    table2 t2 
    USING (id) 
WHERE id > 10; 

注:對於USING條款的工作,列(S)需要兩個表中具有相同的名稱。無論如何,我認爲這是一種最佳做法 - 外鍵與主鍵具有相同的名稱(通常不會是簡單的id)。

此外,您可以使用表別名來減少列名限定時的鍵入量。

+0

謝謝您的回覆。不幸的是,在我的情況下,這兩個字段有不同的名稱,所以我不能使用USING。 – Jachinair

+0

@Jachinair。 。 。在你的問題的例子中,他們有相同的名字。 –

相關問題