作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 3 个 SQL 表。
游戏 wo_tenis_partidos
选择 wo_tenis_pronosticos
配额 wo_tenis_cuotas_ha2
我需要获取满足两个条件的所有行:
条件 1: 其中 CUOTA1 >= CUOTAMIN1 或 CUOTA2 >= CUOTAMIN2
条件 2: 添加条件 1 中出现的具有相同 ID_PARTIDO 的所有行
条件 1 很简单:
SELECT *
FROM wo_tenis_partidos a
INNER JOIN wo_tenis_cuotas_ha2 c ON c.id_partido = a.id
INNER JOIN wo_tenis_pronosticos p ON p.id_partido = a.id
WHERE
a.resultado IS NULL
AND (c.cuota1 >= p.cuotamin1 OR c.cuota2 >= p.cuotamin2)
但是要添加条件 2,我需要这样做:
SELECT *
FROM wo_tenis_partidos a
INNER JOIN wo_tenis_cuotas_ha2 c ON c.id_partido = a.id
INNER JOIN wo_tenis_pronosticos p ON p.id_partido = a.id
WHERE a.id IN (
SELECT a.id
FROM wo_tenis_partidos a
INNER JOIN wo_tenis_cuotas_ha2 c ON c.id_partido = a.id
INNER JOIN wo_tenis_pronosticos p ON p.id_partido = a.id
AND a.resultado IS NULL
AND (c.cuota1 >= p.cuotamin1 OR c.cuota2 >= p.cuotamin2)
)
这是正确的方法吗?还有另一个更优化的选择吗?
最佳答案
在第一个查询中不需要 INNER JOIN 并使用 EXISTS
而不是 IN
子句以获得更好的性能
SELECT *
FROM wo_tenis_partidos aa
INNER JOIN wo_tenis_cuotas_ha2 c ON c.id_partido = aa.id
INNER JOIN wo_tenis_pronosticos p ON p.id_partido = aa.id
WHERE EXISTS (
SELECT 1
FROM wo_tenis_partidos a
INNER JOIN wo_tenis_cuotas_ha2 c ON c.id_partido = a.id
INNER JOIN wo_tenis_pronosticos p ON p.id_partido = a.id
AND a.resultado IS NULL
AND (c.cuota1 >= p.cuotamin1 OR c.cuota2 >= p.cuotamin2)
WHERE aa.id =a.id
)
关于MySQL:WHERE IN 和 JOIN 里面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39915564/
我是一名优秀的程序员,十分优秀!