1

私はクエリを得ました:

SELECT  a.Vendor, i.Vendor
FROM    whole1 a 
        LEFT JOIN whole2 i 
        ON (a.Vendor = i.Vendor) 
GROUP BY a.Vendor, i.Vedor 
LIMIT 0, 200

デフォルトでは、内部結合が使用されます。左の結合により、左のテーブルのすべての結果が得られます。右結合と同じ。

私が探しているのは、左結合と右結合の組み合わせですが、内部結合ではありません。

みたいな結果になりたい

AMD, NULL
ACER, NULL
NULL, INTEL
NULL, ATI

それを行う方法はありますか?

4

2 に答える 2

1

完全な外部結合が必要ですが、 残念ながら には実装されていません。代わりにofとjoinMYSQLを使用できます。unionleftright

SELECT a.`Vendor`, i.`Vendor`
FROM `whole1` a LEFT JOIN whole2 i ON (a.`Vendor` = i.`Vendor`) 
GROUP BY a.`Vendor`, i.`Vendor` 

UNION

SELECT a.`Vendor`, i.`Vendor`
FROM `whole1` a RIGHT JOIN whole2 i ON (a.`Vendor` = i.`Vendor`) 
GROUP BY a.`Vendor`, i.`Vendor`
于 2012-11-10T08:36:02.803 に答える
1

Left and Right Join でユニオンを使用し、そこから制限付きで選択する

SELECT * FROM (
  SELECT 
    a.`Vendor` v1, i.`Vendor` v2
  FROM 
    `whole1` a 
  LEFT JOIN 
    whole2 i ON (a.`Vendor` = i.`Vendor`) 
  GROUP BY 
    a.`Vendor`, i.`Vendor` 

  UNION

  SELECT 
    a.`Vendor`, i.`Vendor`
  FROM 
    `whole1` a 
  RIGHT JOIN 
    whole2 i ON (a.`Vendor` = i.`Vendor`) 
  GROUP BY 
    a.`Vendor`, i.`Vendor`
) AS whole
LIMIT 0,200

SQL フィドル

于 2012-11-10T08:48:39.323 に答える