mysql - SQL查询根据条件选择记录?

标签 mysql sql

我正经历着一段 SQL n00b 时刻。假设我有一个房地产网站,有两个表:propertiesfeatures,并有一个表将它们连接起来。如果我有一个搜索表单,如何构建查询以仅选择符合所有所选条件的属性?

例如,条件将以数组的形式从复选框中发布:

Array
(
    [features] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 5
        )
)

如何从我的属性中选择具有 ID 为 1、2 和 5(也可能是其他)的要素的记录,但只有一两个属性不匹配?

最佳答案

您可以过滤连接表以查找感兴趣的功能,然后按属性分组并将结果集限制为仅包含所需记录数的组:

SELECT   properties.*
FROM     properties JOIN propfeatures USING (property_id)
WHERE    propfeatures.feature_id IN (1,2,5)
GROUP BY property_id
HAVING   COUNT(DISTINCT propfeatures.feature_id) = 3

当然,如果保证唯一性,您可以节省 DISTINCT 操作,而只需使用 COUNT(*) 即可。

关于mysql - SQL查询根据条件选择记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11611931/

相关文章:

php - 用 PHP 比较两个不同的 mysqli_fetch_array 的结果

php - 多选进入输入框

sql - C语言中的嵌入式sql

php - 获得无限级别的子导航

sql - 使用带有 NOT EXISTS 的 INNER JOIN Access INSERT 语句会给出错误的结果

mysql - JOIN 来自同一张表的数据

mysql - 如何使用两个表的外键来记录费用?

Mysql 5.5 到 5.7 - 您不能在 FROM 子句中指定要更新的目标表 - 同一个表

sql - 整数代理键?

SQL ORACLE 按一个月中的所有天进行分组