我正在尝试选择在一系列类别中找到的产品,并且产品是在过去4个月内创建的。我用这个
完成了这个select DISTINCT category_skus.sku, products.created_date from category_skus
LEFT JOIN products on category_skus.sku = products.sku
WHERE category_code > ‘70699’ and category_code < ‘70791’
and products.created_date > “2013-09-13”;
结果如下:
+------------+------------+
|sku |created_date|
+------------+------------+
|511-696004PU|2014-01-07 |
+------------+------------+
|291-280 |2013-12-04 |
+------------+------------+
|89-80 |2013-10-07 |
+------------+------------+
|490-1137 |2013-11-21 |
+------------+------------+
但是我需要在category_code表中选择多个范围。我还需要搜索'60130'和'60420'(这不是一个范围,而是与第一类别相关的其他单个类别),而不是仅仅搜索'70699'到'70791'。这是我上次尝试但是得到“空集(0.00秒):
select DISTINCT category_skus.sku, products.created_date from category_skus
LEFT JOIN products on category_skus.sku = products.sku
WHERE (category_code BETWEEN ‘70699’ and ‘70791’)
and WHERE category_code = ‘60130’ and products.created_date > “2013-09-13”;
我在这里做错了什么???我希望我能够清楚地解释它并感谢您的帮助!
答案 0 :(得分:0)
你的条件有点混乱。 70699-70791之间也不会有任何产品= 60130。尝试在您自己的AND语句中嵌套category_code条件:
SELECT DISTINCT category_skus.sku, products.created_date
FROM category_skus
LEFT JOIN products ON category_skus.sku = products.sku
WHERE products.created_date > '2013-09-13'
AND (
category_code BETWEEN '70699' AND '70791'
OR category_code = '60130'
)
答案 1 :(得分:0)
有很多方法可以做到这一点。您可以尝试一个简单的查询: -
select x.* from (
select DISTINCT category_skus.sku, products.created_date from category_skus
LEFT JOIN products on category_skus.sku = products.sku
WHERE category_code BETWEEN '70699' and '70791'
union all
select DISTINCT category_skus.sku, products.created_date from category_skus
LEFT JOIN products on category_skus.sku = products.sku
WHERE category_code = '60130' or catagory_code='60420'
)x where x.created_date > "2013-09-13"
OR
select DISTINCT s.sku, p.created_date from category_skus s
LEFT JOIN products p on s.sku = p.sku
WHERE s.category_code BETWEEN '70699' and '70791' or (s.catagory_code='60130' or s.catagory_code='60420') and
p.created_date > "2013-09-13"
希望它会对你有所帮助。
答案 2 :(得分:0)
将
where category_code in (select category_code from category_skus where (category_code between '70699' and '70791') or (category_code in ('60130','60420')))
and products.created_date > ...
工作?不确定我是否正确理解了这个问题。