-1

一連のレコードを返す SQL ステートメントがあります。

SELECT
  members.id,
  members.name,
  emlink.tank,
  emlink.dps,
  emlink.heal,
  emlink.mid,
  emlink.eid
FROM 
  members, emlink
WHERE members.id = $mid AND emlink.eid = $eid

結果:

1 Widget 0 0 1 1 8

1 Widget 1 0 0 1 8

これらを次のような単一のレコードにマージするにはどうすればよいですか:

1 Widget 1 0 1 1 8 

ありがとう!

4

2 に答える 2

3

ビットごとにしORますか? その場合は、MySQL のBIT_OR()集計関数を使用します。

SELECT members.id,
       members.name,
       BIT_OR(emlink.tank),
       BIT_OR(emlink.dps ),
       BIT_OR(emlink.heal),
       BIT_OR(emlink.mid ),
       BIT_OR(emlink.eid )
FROM   members, emlink
WHERE  members.id = $mid AND emlink.eid = $eid

sqlfiddleで参照してください。

于 2012-11-15T19:01:10.853 に答える
1
SELECT M.id,
       M.name,
       MAX (E.tank),
       MAX (E.dps),
       MAX (E.heal),
       MAX (E.mid),
       E.eid
  FROM members M,
       emlink E
  WHERE M.id = $mid 
    AND E.eid = $eid
  GROUP BY M.id, M.name, E.eid

または、SUM、MAX、BIT_ORなど、ニーズに最も適した集計関数は何でも

于 2012-11-15T19:02:46.873 に答える