我有一个带有结构的sql表
CREATE TABLE IF NOT EXISTS `engine4_user_fields_values` (
`item_id` int(11) unsigned NOT NULL,
`field_id` int(11) unsigned NOT NULL,
`value` text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`item_id`,`field_id`,`index`)
)
我想选择 field_id ='17' AND value IN(5,8,7)+field_id ='20' AND values IN(73,76) 的行
我无法像下面给出的那样选择它,因为如果 field_id 是 17,它就不会是 20!
SELECT * FROM `engine4_user_fields_values` WHERE (field_id ='17' AND value IN(5,8,7)) AND (field_id ='20' AND value IN(73,76))
如果我们使用 OR 那么它将选择满足任何条件的值。
我们要为此使用 join 吗?我不确定代码! 任何人都请帮我得到这个选择查询
最佳答案
您可以group by
item,并使用having
子句来要求该项目具有符合两个条件的行:
select item_id
from engine4_user_fields_values
group by
item_id
having max(case when field_id ='17' and value in (5,8,7) then 1 end) = 1
and max(case when field_id ='20' and value in (73,76) then 1 end) = 1
关于mysql - mysql上的select查询根据条件从单个表中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13857530/