在同一列上使用多个WHERE范围条件进行SELECTING

时间:2013-03-30 21:29:11

标签: mysql sql

我有这样的表格:

  A table                            B table
--------------------       -----------------------------------
item_ID | item_Name         item_ID | option_ID | option_Value 
--------------------       -----------------------------------
   1      item_a               2         34         2000
   2      item_b               2         45         3400
   3      item_c               2         12         1200  
   4      item_d               3         34         500
   5      item_e               3         13         500
   6      item_f               4         45         700

我写了一个查询来获取项目,例如选项34 = 2000 选项12 = 1200 是:

SELECT A.item_ID, A.item_name
FROM A
LEFT JOIN B ON A.item_ID = B.item_ID
WHERE B.option_ID IN (34, 1200) AND
      B.option_Value IN (1200, 2000) AND
GROUP BY A.item_ID
HAVING COUNT(A.item_ID) >= 2 /* count of option used for search, can be more*/

我的问题是我希望得到范围结果的一些选项,例如:选项ID 34 1000 2000 之间选项12 低于 4000

注意 :( option_id,option_value)对是唯一的,我想获得符合所有条件的项目

2 个答案:

答案 0 :(得分:2)

这个怎么样?

SELECT A.item_ID, A.item_name
FROM A
LEFT JOIN B ON A.item_ID = B.item_ID
WHERE (B.option_ID=34 AND B.option_value BETWEEN 1000 AND 2000)
      OR (B.option_ID=12 AND B.option_value BETWEEN 0 AND 4000)
GROUP BY A.item_ID
HAVING COUNT(A.item_ID) >= 2

也许我完全不理解这个问题?

答案 1 :(得分:2)

这可以给你你想要的东西:

WHERE
  B.option_ID = 34 AND B.option_Value BETWEEN 1000 AND 2000
  OR
  B.option_ID = 12 AND B.option_Value < 4000

如果根据您要过滤的规则,可能有更好的方法可以执行此操作...否则,只需使用ORAND即可实现您的目标。