Mysql多个字段同时满足多组条件

摘要:
问题查询出数据表中,满足颜色是橙色,并且形状是圆形的球有哪些?那么查询就简单的是多个字段中每个字段,同时满足一个值。该表的设计中,一个球的属性与属性值是可扩展的。满足多个属性值的物品会出现多次。所以一般的解决方案就是上面的方案一与方案二,但是考虑一个问题,如果一个球的插入的属性值越来越多的时候,我们的sql会有多长?
问题

查询出数据表(ball)中,满足颜色是橙色,并且形状是圆形的球有哪些?

数据表

ball

解决方案

方案一

SELECT
	name
FROM
	ball
WHERE
	NAME IN (
		SELECT
			NAME
		FROM
			ball
		WHERE
			attribute = 'color'
		AND attribute_value = 'orange'
	)
AND attribute = 'shape'
AND attribute_value = 'circle'

方案二(与方案一类似)

SELECT
	a. NAME
FROM
	ball AS a
JOIN ball AS b ON a. NAME = b. NAME
WHERE
	a.attribute = 'color'
AND a.attribute_value = 'orange'
AND b.attribute = 'shape'
AND b.attribute_value = 'circle'

常规的表设计是将colorshape作为字段,但是如果要扩展就需要预留一些其他字段。那么查询就简单的是多个字段中每个字段,同时满足一个值。
该表的设计中,一个球的属性与属性值是可扩展的。满足多个属性值的物品会出现多次。所以一般的解决方案就是上面的方案一与方案二,但是考虑一个问题,如果一个球的插入的属性值越来越多的时候,我们的sql会有多长?

方案三

SELECT
	NAME
FROM
	(
		SELECT
			NAME,
			count(NAME) AS count
		FROM
			ball
		WHERE
			(attribute, attribute_value) IN ( //这里很秀!
				('color', 'orange'),
				('shape', 'circle')
			)
		GROUP BY
			NAME
	) AS stat
WHERE
	stat.count = 2

免责声明:文章转载自《Mysql多个字段同时满足多组条件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇大数据平台Hive数据迁移至阿里云ODPS平台流程与问题记录bzoj2555(后缀自动机+LCT)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

编码解码

包含要编码的URI或其他文本的字符串。此方法的目的是完全编码URI。因此,encodeURI()函数不会转义URI中具有特殊含义的以下ASCII标点符号:;/?返回编码字符串的副本。此方法不编码ASCII字母和数字,也不编码以下ASCII标点符号:-_!提示和注释提示:您可以使用unescape()来解码转义()编码的字符串。...

Jenkins安装

1、 Jenkins简介1.开源自动化持续集成和部署平台CI、持续集成CD和持续部署2.Jenkins Free风格任务管道Maven项目多配置项目多分支管道任务支持的任务类型,不会执行任何更新;触发器(由Gitlab...

layui 学习笔记(四) 复杂表头前台Excel导出

merges':mergeConf,'!cols':colConf,'!rows‘:rowConf}});}@...

Kafka监控工具——Kafka-Eagle

Kafka监控工具官网https://www.kafka-eagle.org/是什么KafkaEagle是一款用于监控和管理ApacheKafka的完全开源系统,目前托管在Github,由笔者和一些开源爱好者共同维护。而且,在使用消费者API时,尽量#客户端KafkaAPI版本和Kafka服务端的版本保持#一致性。...

如何控制el-image预览图片的大小

Src=“scope.row.carlouseUrl”:1。从“element-ui/packages/image/src/image-viewer”2导入图像查看器importerImageViewer。寄存器组件:3。使用组件<El table columnlabel=“旋转图表”width=“220px”>...

【转】 中兴OLT-C300常用命令

在当前的C220版本中,ONU类型名称在GPON和EPON中应该是唯一的。这里我们使用“ZTEG-F620”。ZXAN#ponZXAN#onu-typegponZTEG-F620描述4ETH,2POTSZXAN#onu-ifZTEG-F620eth_0/1-4ZXAN#onon-ifZTEG-F620pots_0/1-2ZXAN#on u type attr...