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

MySQLサブクエリで複数の列/フィールドを選択する

    はい、あなたはこれを行うことができます。必要なコツは、テーブルサーバーからテーブルを取得する方法が2つあるという概念です。 1つの方法は..

    FROM TABLE A
    

    もう1つの方法は

    です
    FROM (SELECT col as name1, col2 as name2 FROM ...) B
    

    select句とその周りの括弧はであることに注意してください。 テーブル、仮想テーブル。

    したがって、2番目のコード例を使用します(ここで取得したい列を推測しています):

    SELECT a.attr, b.id, b.trans, b.lang
    FROM attribute a
    JOIN (
     SELECT at.id AS id, at.translation AS trans, at.language AS lang, a.attribute
     FROM attributeTranslation at
    ) b ON (a.id = b.attribute AND b.lang = 1)
    

    実際のテーブルのattributeに注意してください はこの結合の最初のテーブルであり、私がbと呼んだこの仮想テーブルです。 2番目のテーブルです。

    この手法は、仮想テーブルがある種のサマリーテーブルである場合に特に便利です。例:

    SELECT a.attr, b.id, b.trans, b.lang, c.langcount
    FROM attribute a
    JOIN (
     SELECT at.id AS id, at.translation AS trans, at.language AS lang, at.attribute
     FROM attributeTranslation at
    ) b ON (a.id = b.attribute AND b.lang = 1)
    JOIN (
     SELECT count(*) AS langcount,  at.attribute
     FROM attributeTranslation at
     GROUP BY at.attribute
    ) c ON (a.id = c.attribute)
    

    それがどうなるかわかりますか?仮想テーブルcを生成しました 2つの列を含み、他の2つに結合し、ONの列の1つを使用しました 句を入力し、もう一方を結果セットの列として返しました。




    1. MySQLで連続したgroupbyを実行するにはどうすればよいですか?

    2. クエリ実行のステートメントタイムアウトを設定する方法

    3. SQLServer2008で最後に挿入されたIDを取得する

    4. SQLSELECTAND演算子