如何在查询中使用行值来影响查询的选择?

时间:2018-07-10 08:45:22

标签: mysql sql database

可以说我有一个表auth_token,其值分别为id_typevalid_to。根据{{​​1}},我想获取所有id_type小于valid_to的令牌。因此,在这种情况下,一旦time() - xxid_type将具有另一个值,而一旦aid_type,则b将具有另一个值。

下面举个例子:一次id_type = a我想一次选择同一行valid_to = time() - 3600,而一次id_type = b我想一次选择同一行{{1 }}。

有人知道我该怎么做到吗?

2 个答案:

答案 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解释的那样简单。在这种情况下,使用带有andor的where子句就足够了。

我的示例将显示为以下查询:

  

从auth_token中选择*,其中(id_type ='a'并且valid_to = time()-3600)或(id_type ='b'并且valid_to = time())