Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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_Select - Fatal编程技术网

MYSQL,在一个查询中如何添加两个不同值的条件?

MYSQL,在一个查询中如何添加两个不同值的条件?,mysql,select,Mysql,Select,我有一个名称数据表(只是一个示例数据) 我想要min(published_time)、max(published_time)和数据类型,它应该按数据类型分组。 对于数据类型(音频、视频、书籍),数据状态应为“活动”,对于其他数据状态,数据状态可以是任何内容。 我试过了 但我没有得到预期的答案。 如何在单个查询中实现这一点?我认为您需要的where子句是: where (datatype in ('AUDIO', 'VIDEO', 'BOOKS') and datastate = 'A

我有一个名称数据表(只是一个示例数据)

我想要min(published_time)、max(published_time)和数据类型,它应该按数据类型分组。 对于数据类型(音频、视频、书籍),数据状态应为“活动”,对于其他数据状态,数据状态可以是任何内容。 我试过了

但我没有得到预期的答案。
如何在单个查询中实现这一点?

我认为您需要的
where
子句是:

where 
    (datatype in ('AUDIO', 'VIDEO', 'BOOKS') and datastate = 'ACTIVE') 
    or datatype not in ('AUDIO', 'VIDEO', 'BOOKS') 
至于整个查询,还不清楚您想要哪个结果。我知道您希望通过
数据类型
进行聚合,因此应该是这样的:

select min(published_time), max(published_time), datatype, any_value(datastate) datastate
from datas
    where 
        (datatype in ('AUDIO', 'VIDEO', 'BOOKS') and datastate = 'ACTIVE') 
        or datatype not in ('AUDIO', 'VIDEO', 'BOOKS') 
group by datatype

我认为你想要的
where
条款是:

where 
    (datatype in ('AUDIO', 'VIDEO', 'BOOKS') and datastate = 'ACTIVE') 
    or datatype not in ('AUDIO', 'VIDEO', 'BOOKS') 
至于整个查询,还不清楚您想要哪个结果。我知道您希望通过
数据类型
进行聚合,因此应该是这样的:

select min(published_time), max(published_time), datatype, any_value(datastate) datastate
from datas
    where 
        (datatype in ('AUDIO', 'VIDEO', 'BOOKS') and datastate = 'ACTIVE') 
        or datatype not in ('AUDIO', 'VIDEO', 'BOOKS') 
group by datatype
选择
最小值(发布时间)、最大值(发布时间)、数据类型
从“数据”
哪里
((datatype='AUDIO'或datatype='VIDEO'或datatype='BOOKS')和datastate='ACTIVE')或(datatype!='AUDIO'和datatype!='VIDEO'和datatype!='BOOKS')
按数据类型分组
选择
最小值(发布时间)、最大值(发布时间)、数据类型
从“数据”
哪里
((datatype='AUDIO'或datatype='VIDEO'或datatype='BOOKS')和datastate='ACTIVE')或(datatype!='AUDIO'和datatype!='VIDEO'和datatype!='BOOKS')
按数据类型分组

您的条件可以简化为:

WHERE datastate = 'ACTIVE' OR datatype NOT IN ('AUDIO', 'VIDEO', 'BOOKS')
您必须在查询中使用
按数据类型分组

SELECT MIN(published_time), MAX(published_time), datatype
FROM datas
WHERE datastate = 'ACTIVE' OR datatype NOT IN ('AUDIO', 'VIDEO', 'BOOKS')
GROUP BY datatype
datastate
在结果中没有意义,因为如果
datatype
不是
'AUDIO'
'VIDEO'
'BOOKS'
中的任何一个,它可以是任何内容

如果需要每个
数据类型的所有
数据状态
,可以使用
GROUP\u CONCAT()


您的条件可以简化为:

WHERE datastate = 'ACTIVE' OR datatype NOT IN ('AUDIO', 'VIDEO', 'BOOKS')
您必须在查询中使用
按数据类型分组

SELECT MIN(published_time), MAX(published_time), datatype
FROM datas
WHERE datastate = 'ACTIVE' OR datatype NOT IN ('AUDIO', 'VIDEO', 'BOOKS')
GROUP BY datatype
datastate
在结果中没有意义,因为如果
datatype
不是
'AUDIO'
'VIDEO'
'BOOKS'
中的任何一个,它可以是任何内容

如果需要每个
数据类型的所有
数据状态
,可以使用
GROUP\u CONCAT()


感谢您的回答,但没有得到正确的答案,它可能适用于“关于”表数据,但不适用于其他人。感谢您的回答,但没有得到正确的答案,它可能适用于“关于”表数据,但不适用于其他人。还可以获得最小值(发布时间)和最大值(发布时间)及其ID吗?如果不是,你能告诉我为什么吗?这是两个ID:一个用于最小值(发布时间),一个用于最大值(发布时间),用于每个数据类型,你需要两个表连接。只有当每个数据类型的“发布时间”列都是唯一的时,才能执行此操作。你想要吗?不,但谢谢你重播。我使用了两个不同的查询来获取发布时间的最小值和最大值。还可以获取最小值(发布时间)和最大值(发布时间)及其ID吗?如果不是,你能告诉我为什么吗?这是两个ID:一个用于最小值(发布时间),一个用于最大值(发布时间),用于每个数据类型,你需要两个表连接。只有当每个数据类型的“发布时间”列都是唯一的时,才能执行此操作。你想要吗?不,但谢谢你重播。我使用了两个不同的查询来获取发布时间的最小值和最大值。