2016-12-31 1 views
0

私は書いていないコードがあります。特定のSQLクエリが含まれています。MySQL - 空の接頭辞がある場合はデフォルトとしてテーブルを設定します

個人的には、LEFT JOINで別のテーブルに部分的に変更したいのですが、最小限のコード変更が必要です。

問題:あいまいなフィールドがいくつかあります。

SQLクエリがかなり大きく、元のコード内の他の関数から動的に来るので、すべてのあいまいなフィールドにプレフィックスを付けるのは嫌です。

私の質問です:LEFT JOINから新しいテーブルに接頭辞を付ける方法はありますか?MySQLはテーブルAのように接頭辞なしのフィールドを考慮しますか?

例:接頭辞なしすべての "ID" の出現箇所をTABLE1にリンクされている

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

もしそうでない場合、私の他の解決策は何ですか?

基本的には、コードが動的でコード内の他の関数から来ているため、大きな条件に触れたくないので、どこでも変更したくありません。

ありがとうございます。

答えて

1

すべての列名を修飾する必要があります。これは単なる良い習慣であり、コードを理解して維持しやすくします。

つまり、USING節を使用する場合、結合で使用される列名を修飾する必要はありません。実際、そのような名前を修飾するべきではありません。だから、あなたは安全に書き込むことができます。

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

注:USING句が機能するためには、列(s)が両方のテーブルに同じ名前を持っている必要があります。とにかくこれはベストプラクティスとみなされます。つまり、外部キーはプライマリキーと同じ名前です(通常は単純なidではありません)。

また、列の名前を修飾する際に、表の別名を使用して型を減らすことができます。

+0

ありがとうございます。残念ながら、私の場合は、2つのフィールドの名前が異なるため、USINGを使用することはできません。 – Jachinair

+0

@Jachinair。 。 。あなたの質問の例では、彼らは同じ名前を持っています。 –

関連する問題