2013-06-18 2 views
1

У меня есть записи, как это ....В статье с операцией И

oid  id 

35   1 

43   1 

46   1 

43   2 

49   2 

50   3 

51   3 

52   4 

У меня есть идентификатор = 1 и 2. Я хочу получить те результаты, которые относятся только к идентификаторам (1,2).

т.е. - о/р = recodrds из object_id = 43, так как он, как принадлежность к 1 и 2.

если я использую в оператор, то он дает все записи (выполнение ИЛИ operaion)

ответ

0

You can use the IN оператора, а затем использовать GROUP BY с HAVING п возвращать только те строки, с отчетливым колом-2:

select oid 
from yourtable 
where id in (1,2) 
group by oid 
having count(distinct id) = 2; 
          --^ change this number to the count of ids in IN clause 

См SQL Fiddle with Demo

1

Это общее, быстрое решение таких проблем.

  1. Получить все идентификаторы (в данном случае OID значения), что staisfy нашего состояния:

    select oid from MyTalbe 
    where id in (1,2) 
    group by oid 
    having count (distinct id) >1 
    

  2. Select rows where IDs ('oid` column) IN list of IDs we need:

    select oid, id from Mytable where oid in (select oid from MyTalbe where id in (1,2) -- This is the same as: where id =1 or id=2 group by oid having count (distinct id) >1 )

+0

пожалуйста, проверьте мой обновленный вопрос ... на самом деле у меня есть больше результатов и у меня есть ID = 1,2, и мне нужен результаты этих 2 идентификаторов –

+0

Обновленных. Когда вы хотите использовать определенные значения, вы используете предложение WHERE. – Stoleg

+0

Пожалуйста, введите код для этого .. где id = 1,2 –

0

Try this

SELECT t.oid FROM table1 t 
WHERE t.oid IN (SELECT oid FROM table1 t1 WHERE t1.oid=t.oid AND t1.id = 1) 
AND t.oid IN (SELECT oid FROM table1 t1 WHERE t1.oid=t.oid AND t1.id = 2) 
GROUP BY oid 
+0

, но у меня есть id = 1 и 2. Я хочу, чтобы результаты обоих 2s –

+0

проверяли обновленный ответ – bvr

Смежные вопросы