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

xurqigkl  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(286)

假设我有一张table auth_token 有价值观 id_type 以及 valid_to . 取决于 id_type 我想把所有的代币都拿出来 valid_to 小于 time() - x . 所以在这种情况下 x 会有另一个价值 id_typea 那就一次 id_typeb .
举个例子:一次 id_type = a 我想选择同一行一次 valid_to = time() - 3600 什么时候 id_type = b 我希望同一行被选中一次 valid_to = time() .
有人知道我怎样才能做到这一点吗?

42fyovps

42fyovps1#

可以在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);
bxpogfeg

bxpogfeg2#

就像斯凯尔瓦解释的那样简单。使用where子句 and 以及 or 对这个案子来说已经足够了。
我的例子如下:
选择*from auth\u token where(id\u type='a'和valid\u to=time()-3600)或(id\u type='b'和valid\u to=time())

相关问题