このソリューションを使用できます:
SELECT
a.property AS p1, b.property AS p2
FROM
(
SELECT a.property, @rn1:=@rn1+1 AS rn
FROM T1 a
INNER JOIN T2 b ON a.id = b.id1
CROSS JOIN (SELECT @rn1:=0) var_init
) a
INNER JOIN
(
SELECT a.property, @rn2:=@rn2+1 AS rn
FROM T1 a
INNER JOIN T2 b ON a.id = b.id2
CROSS JOIN (SELECT @rn2:=0) var_init
) b ON a.rn = b.rn
編集:これは、より単純なMadhivananのソリューションのバリエーションです。
SELECT MAX(CASE WHEN a.id=b.id1 THEN a.property END) AS p1,
MAX(CASE WHEN a.id=b.id2 THEN a.property END) AS p2
FROM T1 a
JOIN T2 b ON a.id IN (b.id1,b.id2)
GROUP BY a.id
GROUP BY と MAX を追加して、 ごとid
に 2 つの行を取得しないようにし、各グループの null 以外の値を取得する case 式の最大値を選択するだけです (基本的に、各列のプロパティを同じ各行id
)。