MYSQL,在一个查询中如何添加两个不同值的条件?
我有一个名称数据表(只是一个示例数据) 我想要min(published_time)、max(published_time)和数据类型,它应该按数据类型分组。 对于数据类型(音频、视频、书籍),数据状态应为“活动”,对于其他数据状态,数据状态可以是任何内容。 我试过了 但我没有得到预期的答案。MYSQL,在一个查询中如何添加两个不同值的条件?,mysql,select,Mysql,Select,我有一个名称数据表(只是一个示例数据) 我想要min(published_time)、max(published_time)和数据类型,它应该按数据类型分组。 对于数据类型(音频、视频、书籍),数据状态应为“活动”,对于其他数据状态,数据状态可以是任何内容。 我试过了 但我没有得到预期的答案。 如何在单个查询中实现这一点?我认为您需要的where子句是: where (datatype in ('AUDIO', 'VIDEO', 'BOOKS') and datastate = 'A
如何在单个查询中实现这一点?我认为您需要的
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:一个用于最小值(发布时间),一个用于最大值(发布时间),用于每个数据类型,你需要两个表连接。只有当每个数据类型的“发布时间”列都是唯一的时,才能执行此操作。你想要吗?不,但谢谢你重播。我使用了两个不同的查询来获取发布时间的最小值和最大值。