2017-08-22 14 views
-1

私は両方のテーブルにあるIDを私に与える以下のクエリを持っています。Mysqlは他のテーブルから欠損値を取得します

SELECT DISTINCT IP.id 
FROM `table2` IR LEFT JOIN 
(SELECT id 
FROM table1 
WHERE item='xyz' 
ORDER BY Id limit 728,91 
) 
AS IP on IP.id = IR.id 
where IR.item='xyz' 
AND IR.idr='2295' 

は今、私はあなたが、外側は他の方法でラウンドを動作する加入必要

+1

左の参加はあなたに右の加入結合を使用して、だから、TABLE1 に存在しないtable2の中にIDの両方のテーブルのマッチングだけでなく、IDを与える必要があり、あなたが逆 – Krishnakumar

+2

を達成することができ結ぶ任意のポイントLEFTはめったにありません列が選択されていない表。それは運がそれを持っていたので、これは内部の結合であると言いました。また、ORDER BY iaなしのLIMITはほとんど無意味です。 – Strawberry

+0

参照:[非常に単純なSQLクエリと思われるものに対して、なぜMCVEを提供する必要がありますか?](https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve私にとって非常にシンプルなSQLクエリ) – Strawberry

答えて

1

表1に存在する表2から欠落しているIDが必要です。また、サブクエリは必要ありません。次のクエリでは、itemの値を持つの値がitemであり、idと同じ値を持つtable2のレコードと、とidrの値を持つレコードは返されません。

select distinct ip.id 
from  table1 ip 
left join table2 ir 
     on ir.id = ip.id 
     and ir.item = 'xyz' 
     and ir.idr = '2295' 
where  ip.item = 'xyz' 
and  ir.id is null 
order by ip.id 
limit  728, 91 

NB:あなたもそれに(与えられた条件で)table1table2の両方に存在するid値を追加したい場合は、(外側)に理由がない全くtable2に参加。

+0

ありがとうございました。クエリは私にとっても完璧に見えます。しかし、私は望みの結果を得ていません。それでも問題を解決できない場合は、詳細を追加して詳細を追加します。 – vivek

+0

サンプルデータと希望する出力を提供することができれば助かります。 – trincot

関連する問題