我有一个像这样的简单查询
select * from user where xxx between a and b
但如果我有多个输入,如xxx,yyy,mmm,bbb。
与sintax相同,
select * from user where xxx,yyy,mmm,bbb between a and b
我希望选择所有用户a和b在xxx,yyy,mmm和bbb之间。所以它将返回a和b匹配creteria之间的所有用户。
由于
答案 0 :(得分:3)
SELECT *
FROM user
WHERE (xxx BETWEEN a and b)
AND (yyy BETWEEN a and b)
AND (mmm BETWEEN a and b)
AND (bbb BETWEEN a and b)
如果您希望所有条件都匹配。如果您希望至少其中一个匹配,请使用OR
代替AND
。
答案 1 :(得分:0)
我会创建两个额外的表来存储您的日期:
date_type (date_type_id, date_label)
user_date (user_id, date_type_id, date_value)
可以这样填充:
date_type (1, 'Sign in')
date_type (2, 'Sign out')
user_date (1, 1, '2010-08-11 02:14:20')
user_date (1, 1, '2010-08-11 02:36:54')
// etc
然后你必须做一些JOIN才能达到你想要的效果:
SELECT *
FROM user
INNER JOIN user_date
USING (user_id)
INNER JOIN date_type
USING (date_type_id)
WHERE date_value BETWEEN a AND b;
AND date_type_id IN (1,2) -- if necessary, you can choose which
-- types to check