过滤MySQL中的每一列

时间:2019-03-26 13:38:29

标签: mysql sql

我现在有一个包含三个表的数据库:equipements和equipements_statistics包含每个装备的统计信息,最后是包含所有类型统计信息的统计信息。

要在过滤器上检索设备,我正在执行以下查询:

SELECT
    *
FROM
    `equipement`
INNER JOIN `equipement_stats` ON `equipement_stats`.`id_equipement` = `equipement`.`id_equipement`
INNER JOIN `stats` ON `stats`.`id_stats` = `equipement_stats`.`id_stats`
WHERE
    `stats`.`id_stats` IN(1068, 1069)
GROUP BY
    `equipement`.`id_equipement`
HAVING
    COUNT(DISTINCT stats.id_stats) = 1
LIMIT 10

表是这样的:

设备

+---------------+-----------------+
| id_equipement | name_equipement |
+---------------+-----------------+
|             1 | one             |
|             2 | two             |
|             3 | three           |
+---------------+-----------------+`

equipment_stats

+---------------+-----------+---------------+
| id_equipement | id_stats  | random_number |
+---------------+-----------+---------------+
| 1             | 2         | 0             |
| 1             | 4         | 0             |
| 1             | 1069      | 1             |
| 1             | 8         | 0             |
| _____________ | _________ | _____________ |
| 2             | 1070      | 2             |
| 2             | 1069      | 3             |
| 2             | 20        | 0             |
| 2             | 40        | 0             |
+---------------+-----------+---------------+

如果统计信息是1068或1069,我必须在列random_number上对其进行过滤,但是random_number的值对于1070和1069可能有所不同。如何只查找具有精确的random_number的精确id_stats? / p>

例如,我要过滤的设备中,统计值为1070的random_number为2且统计值为1069的random_number 3为第二项。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

过滤元组的最简单方法是:

WHERE (equipement_stats.id_stats, equipement_stats.random_number) IN ( (1068,2) , (1069,3) )