sql >> データベース >  >> RDS >> Mysql

MySQLクエリがサブクエリとしてラップされている場合にのみ列エラーが重複する

    エラーが発生した理由は、エイリアシングAS Xが原因です。 。しかし、問題は実際には*を使用したことです 、必要なフィールドを一覧表示する代わりに。

    最初のクエリでは、SELECT * 実際には次のようなフィールドを生成します:

    A.id, A.name, A.description, B.id, B.name, B.date_started, C.id, C.name, C.isDeleted
    

    これは、フィールドをその名前で直接参照しようとし、そのエイリアスを使用しない限り、正常に機能します。いずれにせよ、SQLエンジンでこれに問題が発生することはありませんが、結果セットで何をしていても問題が発生する可能性があります。

    ただし、クエリをサブクエリに移動し、結果をAS Xにエイリアスすると 、その後、次のようになります:

    X.id, X.name, X.description, X.id, X.name, X.date_started, X.id, X.name, X.isDeleted
    

    今、あなたはそれが不平を言っている理由を見ることができます。 *を使用するのも悪い理由がわかります 、この組み合わせは一定期間機能する可能性があるため、既存のテーブルに新しいフィールドを追加します。これは別のテーブルと同じです。これらのテーブルの両方で作成したすべてのクエリは、次のようにする必要があります。書き直しました。



    1. MySQLメモリテーブルに相当するPostgreSQL?

    2. microtimeの10進数の長さ(true)?

    3. mysqlストアドプロシージャで5つのランダムな数値を生成する方法

    4. 混合文字列/整数列の最大値を選択する方法は?