我现在有一个包含三个表的数据库: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为第二项。
感谢您的帮助!
答案 0 :(得分:1)
过滤元组的最简单方法是:
WHERE (equipement_stats.id_stats, equipement_stats.random_number) IN ( (1068,2) , (1069,3) )