私は2つのテーブルを持っています。1つは数値の範囲で、2つ目は数値です。ステータスが (2,0) の数字が少なくとも 1 つあるすべての範囲を選択する必要があります。私はいくつかの異なる結合を試しましたが、それらのいくつかは実行に永遠にかかりました.私が終了したものは高速ですが、本当に少数の範囲を選択します.
SELECT SQL_CALC_FOUND_ROWS md_number_ranges.*
FROM md_number_list
JOIN md_number_ranges
ON md_number_list.range_id = md_number_ranges.id
WHERE md_number_list.phone_num_status NOT IN (2, 0)
AND md_number_ranges.reseller_id=1
GROUP BY range_id
LIMIT 10
OFFSET 0
必要なのは、「すべての範囲を選択し、number.range_id = range.id で、phone_number_status が (2, 0) にない番号が少なくとも 1 つある番号を結合する」のようなものです。
どんな助けでも本当に感謝しています。
データ構造の例:
md_number_ranges:
id | range_start | range_end | reseller_id
1 | 000001 | 000999 | 1
2 | 100001 | 100999 | 2
md_number_list:
id | range_id | number | phone_num_status
1 | 1 | 0000001 | 1
2 | 1 | 0000002 | 2
3 | 2 | 1000012 | 0
4 | 2 | 1000015 | 2
ステータス1の数字が1つあるため、範囲1を選択できるようにしたいのですが、範囲2は選択できません.2つの数字があるため、選択したくないステータスです。