可以说我有一个表auth_token
,其值分别为id_type
和valid_to
。根据{{1}},我想获取所有id_type
小于valid_to
的令牌。因此,在这种情况下,一旦time() - x
为x
,id_type
将具有另一个值,而一旦a
为id_type
,则b
将具有另一个值。
下面举个例子:一次id_type = a
我想一次选择同一行valid_to = time() - 3600
,而一次id_type = b
我想一次选择同一行{{1 }}。
有人知道我该怎么做到吗?
答案 0 :(得分:0)
您可以在where子句中使用case when条件。
i.e.
Select *
from auth_token
where (CASE WHEN id_type = 'a' THEN valid_to = ? WHEN id_type = 'b' THEN valid_to = ? END);
答案 1 :(得分:0)
就像skelwa解释的那样简单。在这种情况下,使用带有and
和or
的where子句就足够了。
我的示例将显示为以下查询:
从auth_token中选择*,其中(id_type ='a'并且valid_to = time()-3600)或(id_type ='b'并且valid_to = time())