0

2 つのテーブルがあり、1 つはデータを含み、もう 1 つはそのデータの値を含みます。次のような値を持つすべてのデータを選択する必要があります。 (data=1 OR data=2) AND (data=3 OR data=4)

Info ofc ごとに多くの値が存在する可能性があるため、 である必要がありますがGROUP BY、これについての私の考えはすべてです。私はこのようなことを試しました: SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.info_id WHERE val IN (1) AND val IN (2) GROUP BY id

もちろん、1つのフィールドに異なる番号の情報がないため、機能しません。助けていただけますか?

4

1 に答える 1

1

having句を使用してこれを行うことができます。

SELECT id
FROM t1 LEFT JOIN t2 ON t1.id = t2.info_id
GROUP BY id
having (sum(data = 1) > 0 or sum(data = 2) > 0) and
       (sum(data = 3) > 0 or sum(data = 4) > 0)

のような各式は、が同じsum(data = 1)行内で、その値に一致する行の数をカウントしますid

注: これはid、条件に一致する を返します。元のデータを取得するには、テーブルに再び結合する必要があります。

于 2013-07-11T11:27:42.397 に答える