mysql - mysql上的select查询根据条件从单个表中选择值

标签 mysql sql

我有一个带有结构的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/

相关文章:

mysql - 创建表时SQL查询语法错误

mysql - 汇总一个表,其中某些字段为空值

python - 在 SQLAlchemy 中禁用提交对象更改

c++ - 跨平台mySQL与字符集不一致

php - 如何使用 LOAD DATA LOCAL 忽略记事本中的第一行

python - 如何通过查询向mysql表中添加新列

mysql - 导入 10 GB SQL 文件

javascript - 我需要在 ASP.NET 中编写动态报表生成器代码,应该从哪里开始?

sql - 如何在同一个表中插入多行-Oracle 10g

mysql - SQL查找最大共同出现次数