gpt4 book ai didi

mysql - 有实体表和有属性的单独表,如何构建优雅的SQL查询

转载 作者:行者123 更新时间:2023-11-30 21:46:10 24 4
gpt4 key购买 nike

MySQL数据库中有表

entity
----------
ID NAME
1 entity1
2 entity2
3 entity3

entity_props
----------
ENTITY_ID PROP_ID PROP_VALUE
1 23 abc
1 24 def
1 25 xyz

当我需要选择具有属性值 23="abc"、24="def"和 25="xyz"的所有实体时,我使用此类请求

SELECT ID 
FROM entity
WHERE PROP_ID=23 AND PROP_VALUE="abc" AND ID IN
(SELECT ENTITY_ID FROM entity_props WHERE PROP_ID=24 AND PROP_VALUE="def" and ENTITY_ID IN
(SELECT ENTITY_ID FROM entity_props WHERE PROP_ID=25 AND PROP_VALUE="xyz"))

但是当属性太多时,它看起来很糟糕。你能建议如何简化它吗?

提前致谢!

最佳答案

嗯。 . . group byhaving 怎么样?

select entity_id
from entity_props ep
where (prop_id, prop_value) in ((23, 'abc'), (24, 'def'), (25, 'xyz'))
group by entity_id
having count(distinct prop_id) = 3;

关于mysql - 有实体表和有属性的单独表,如何构建优雅的SQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49392994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com