0

ご覧のとおり、t1とt2には類似した行がいくつかあります。最初のクエリで一致しないものを選択し、次のクエリを使用しました

SELECT DISTINCT t1.usr_id
FROM t1, t2
WHERE t1.usr_id != t2.usr_id
AND t1.event =  '$event'
AND t1.client =  '$client'
GROUP BY t1.usr_id

ここで、上記のクエリの結果を使用して、usr_idに一致するt3から*を選択します。私は他のほぼ同様の質問に与えられた答えを試しましたが、それらのどれも1つのクエリから減算し、結果を使用して2番目のクエリからデータを取得していません

4

1 に答える 1

1

これを試して:

SELECT t3.usr_id FROM t3 WHERE t3.usr_id IN 
(SELECT DISTINCT t1.usr_id
FROM t1, t2
WHERE t1.usr_id != t2.usr_id
AND t1.event =  '$event'
AND t1.client =  '$client'
GROUP BY t1.usr_id)

しかし、それは遅いかもしれません:

SELECT table.usr_id
FROM ( SELECT DISTINCT t1.usr_id
FROM t1, t2
WHERE t1.usr_id != t2.usr_id
AND t1.event =  '$event'
AND t1.client =  '$client'
GROUP BY t1.usr_id ) as table
JOIN t3 ON t3.usr_id = table.usr_id 
于 2012-07-24T19:04:03.987 に答える