Mysql 如何在查询中使用行值来影响查询的选择?
假设我有一个表Mysql 如何在查询中使用行值来影响查询的选择?,mysql,sql,database,Mysql,Sql,Database,假设我有一个表auth\u token,其值为id\u type和valid\u to。根据id\u类型的不同,我想获取有效\u到的小于time()-x的所有令牌。因此,在这种情况下,x一旦id\u-type为a就会有另一个值,然后一旦id\u-type为b 让我们举个例子:一次id\u type=a我想让同一行被选中一次valid\u to=time()-3600当id\u type=b时,我想让同一行被选中一次valid\u to=time() 有人知道我如何做到这一点吗?您可以在where
auth\u token
,其值为id\u type
和valid\u to
。根据id\u类型
的不同,我想获取有效\u到
的小于time()-x
的所有令牌。因此,在这种情况下,x
一旦id\u-type
为a
就会有另一个值,然后一旦id\u-type
为b
让我们举个例子:一次id\u type=a
我想让同一行被选中一次valid\u to=time()-3600
当id\u type=b
时,我想让同一行被选中一次valid\u to=time()
有人知道我如何做到这一点吗?您可以在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);
这就像斯凯尔瓦解释的那样简单。对于这种情况,使用带有
和和或的where子句就足够了
我的示例将展开为以下查询:
从身份验证令牌中选择*,其中(id\u type='a'和valid\u to=time()-3600)或(id\u type='b'和valid\u to=time())
这不是一个简单的where子句,比如'Select*from auth_-token where(id_-type='a'和valid_-to=time()-3600)或(id_-type='b'和valid_-to=time());我想这是一个解决方案,并不像我想象的那么难。谢谢:)样本数据和期望的结果会很有帮助。