2

preference" " テーブル内のすべてのレコードが、返された結果のstring内側になるようにするのを手伝ってくれませんか?p.data

しか考えられませんでしCONCATたが、私の内部結合は 1 つのレコードしか選択しません。

クエリの例

SELECT 
    u.userid, 
    p.data

FROM user u

INNER JOIN preference p ON (
  p.userid = u.userid
)

WHERE u.userid = 1

望ましい出力

userid  |  data
--------------
1       | 1,2,3,4,5
2       | 1,2,3,4
3       | 1,2,3
4

2 に答える 2

3

MySQLGROUP_CONCAT()はまさにこの機能を実行します。

SELECT
  u.userid,
  GROUP_CONCAT(p.data) AS data
FROM
  user u
  INNER JOIN preference p ON u.userid = p.userid
WHERE u.userid = 1
GROUP BY u.userid

WHERE句のために、1行しか返されません。WHEREすべてのユーザーの行を返すには、句を削除してください。LEFT JOINテーブルに関連する行を持たないユーザーを返す場合は、 a に切り替えpreferenceます。

于 2012-07-30T18:49:23.030 に答える
2

内部結合は 1 つのフィールドにのみ結合してもかまいません。グループを追加する必要があります

SELECT 
    u.userid, 
    GroupConcat(p.data) as Data

FROM user u

INNER JOIN preference p ON (
  p.userid = u.userid
)
--WHERE u.userid = 1 With this you not gonna get the desired output.
group by u.userId
于 2012-07-30T18:50:02.030 に答える