Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在查询中使用行值来影响查询的选择?_Mysql_Sql_Database - Fatal编程技术网

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());我想这是一个解决方案,并不像我想象的那么难。谢谢:)样本数据和期望的结果会很有帮助。