0

次のクエリがあります。

SELECT distinct a, b, c, d 
FROM db.table
INNER JOIN db.table2
ON table.name=table2.name2
WHERE e <>'65';

クエリは、a、b、c、d で異なる値を選択します。私が実際に必要としているのは、明確なものaだけです。b,c,dについての詳細情報を提供するために、残りの列が必要aです。どうすればこれを実行できますか。列が table.name への外部キー参照
であるテーブルが 1:N として接続されていることがわかります。table2.name2つまり、table.name は、table2 に対応する複数のレコードを持つことができる一意の値です。

外部キーを使用して 1:M として接続された 2 つのテーブルと、クエリの記述に関して完全に分離された 2 つのテーブルの違いは何ですか。

4

1 に答える 1

1

これを達成するには、 in で使用GROUP BYする必要があります:GROUP_CONCATSELECT

SELECT a,
       GROUP_CONCAT(b) AS b,
       GROUP_CONCAT(c) AS c,
       GROUP_CONCAT(d) AS d
FROM db.table
     INNER JOIN db.table2
        ON table.name=table2.name2
WHERE e <>'65'
GROUP BY a;
于 2012-08-24T07:36:46.653 に答える