/ / Sprawdź, czy wiele rekordów pasuje do zestawu wartości - mysql, sql

Sprawdź, czy wiele rekordów pasuje do zestawu wartości - mysql, sql

Czy istnieje sposób, aby napisać pojedyncze zapytanie do sprawdzeniaczy zestaw wierszy pasuje do zestawu wartości? Mam jeden wiersz na zestaw wartości, które muszę dopasować i chciałbym wiedzieć, czy wszystkie wiersze są dopasowane, czy nie.Może wykonać to za pomocą wielu zapytań, takich jak:

select * from tableName where (value1, value2) = ("someValue1", "someValue2")
select * from tableName where (value1, value2) = ("someOtherValue1", "someOtherValue2")

... i tak dalej, aż do dowolnej liczby zapytań. W jaki sposób tego rodzaju rzeczy można ponownie napisać jako pojedyncze zapytanie, w którym zapytanie zwraca TYLKO, jeśli wszystkie wartości są dopasowane?

Odpowiedzi:

2 dla odpowiedzi № 1

Możesz spróbować czegoś takiego jak:

select t.*
from tableName t
join (select "someValue1" value1, "someValue2" value2 union all
select "someOtherValue1", "someOtherValue2") v
on t.value1 = v.value1 and t.value2 = v.value2
where 2=
(select count(distinct concat(v1.value1, v1.value2))
from (select "someValue1" value1, "someValue2" value2 union all
select "someOtherValue1", "someOtherValue2") v1
join tableName t1
on t1.value1 = v1.value1 and t1.value2 = v1.value2)

Jeśli masz dużą liczbę par wartości, którechcesz sprawdzić, może być łatwiej wstawić je do tabeli tymczasowej i użyć tabeli tymczasowej w powyższym zapytaniu, zamiast dwóch oddzielnych, zakodowanych sztywno tabel wirtualnych.


2 dla odpowiedzi nr 2

Co powiesz na:

SELECT *
FROM tableName
WHERE value1 IN ("someValue1", "someOtherValue1") AND
value2 IN ("someValue2", "someOtherValue2")