这是我尝试过的,但没有用。
SELECT COUNT(*) AS month_count
FROM `wp_postmeta`
WHERE
`meta_key`='from_dt' AND
(`meta_value` BETWEEN '$st' AND '$end') AND
(`meta_value` BETWEEN '$st1' AND '$end1');
我正在计算在$ st和今年年底之间出现的月份数量&介于明年$ st1和$ end1之间。假设我在meta_value字段中有2个日期(2013年2月和2014年2月),我希望查询返回2(因为有2月2日)。
如何在一个sql语句中的运算符之间使用2?
答案 0 :(得分:2)
您的查询在技术上没有任何错误,但根据您所需的结果,您可能希望使用OR
- 只需确保您的括号位于正确的位置:
SELECT COUNT(*) AS month_count
FROM `wp_postmeta`
WHERE
`meta_key`='from_dt' AND
((`meta_value` BETWEEN '$st' AND '$end') OR
(`meta_value` BETWEEN '$st1' AND '$end1'))
您当前的查询要求meta_value位于两组数字之间,这可能是您的问题。
答案 1 :(得分:0)
SELECT COUNT(*) AS month_count
FROM `wp_postmeta`
WHERE
(`meta_key`='from_dt' AND `meta_value` BETWEEN '$st' AND '$end') OR
(`meta_key`='from_dt' AND `meta_value` BETWEEN '$st1' AND '$end1')
答案 2 :(得分:0)
也许您正在寻找这些范围内的两个不同的行。为此,请使用having
子句:
SELECT COUNT(*) AS month_count
FROM `wp_postmeta`
WHERE `meta_key`='from_dt'
having sum(case when `meta_value` BETWEEN '$st' AND '$end' then 1 else 0 end) > 0 AND
sum(case when `meta_value` BETWEEN '$st1' AND '$end1' then 1 else 0 end) > 0);
答案 3 :(得分:0)
SELECT COUNT(*) AS month_count
FROM `wp_postmeta`
WHERE `meta_key`='from_dt' AND
(`meta_value` BETWEEN '$st' AND '$end') OR (`meta_value` BETWEEN '$st1' AND '$end1');
答案 4 :(得分:0)
我认为你想要一个OR而不是AND。认为在AND bith条件下必须满足,而在OR条件下就足够了。