Czy mógłbyś mi powiedzieć, jak znaleźć użytkowników z Formfieldid ((1 i 2) lub 3), więc zapytanie SQL powinno zwrócić identyfikatory użytkownika: 7, 8, 9.

Stół:

The table

Używam SQL Server.

Dziękuję Ci!

0
Zsolt 16 październik 2020, 11:36

2 odpowiedzi

Najlepsza odpowiedź

Poleciałbym klauzulę {X0}}, aby zaimplementować filtrowanie LogC:

select userid
from mytable
group by userid
having 
    (
         max(case when formfieldid = 1 then 1 end) = 1 
         and max(case when formfieldid = 2 then 1 end) = 1
    )
    or max(case when formfieldid = 3 then 1 end) = 1

W zależności od aktualnej bazy danych, której nie mówiłeś, może wystąpić opcje NEATER, aby wyrazić warunki. Na przykład w MySQL:

having 
    (max(formfieldid = 1) and max(formfieldid = 2))
    or max(formfieldid = 3)
0
GMB 16 październik 2020, 08:48

Możesz spróbować poniżej -

select userid from table1 t
group by userid having (min(formfieldid)=1 and max(formfieldid) in (2,3)) 
    or min(formfieldid)=3  
0
Fahmi 16 październik 2020, 09:01