【发布时间】:2013-03-31 16:59:38
【问题描述】:
我有两张表,一张是数字范围,第二张是数字。我需要选择所有范围,其中至少有一个状态为 (2,0) 的数字。我尝试了许多不同的连接,其中一些连接需要很长时间才能执行,我以它结束的速度很快,但它选择的范围非常小。
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 的号码,并且至少有一个电话号码状态不在 (2, 0) 中的号码。
任何帮助将不胜感激。
示例数据结构:
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 的数字,但没有范围 2,因为它有两个数字,但状态我不想选择。
【问题讨论】:
-
是否可以共享表列和一些数据?
-
是的,我想,但不确定如何在 stackoverflow 编辑器中制作表格
-
您可以截屏,并作为图片上传。
-
我在原始帖子中添加了示例