mysql - 有没有优化/更好的方法来编写这个查询?

标签 mysql sql query-optimization

我有以下查询,想知道是否可以用更好的方式重写?

SELECT COL1, COL2 FROM TABLE1 WHERE ID = 1 and COL4 = 1415 AND COL3 IN 
(SELECT MAX(COL3) FROM TABLE1 WHERE PRI = ID = 1 and COL4 = 1415);

问题的产生是因为子查询的where子句中的过滤器ID和Col4与主查询中的过滤器相同。

最佳答案

您可以使用:

    SELECT COL1, COL2,MAX(COL3) as mx FROM TABLE1 WHERE ID = 1 
     and COL4 = 1415  having  mx=MAX(COL3);

这将避免额外的子查询。

关于mysql - 有没有优化/更好的方法来编写这个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42129601/

相关文章:

mysql - 子查询一直出错我该怎么办?

php - 我正在对数据库中的数据进行排序,但网页不生效

php - 将动态对象属性名称插入数据库

PHP 和 MySQL 验证问题

mysql - 并发时增加相同计数器

sql - 我如何优化这个查询?

sql - ADODB Excel SQL 语句写入下一个可用行

mysql - Zen Cart 对数据库的写入过多。可能的解决方案?

mysql - 高效查询 - 当查询A表中的一组特定ID时,如何检查B表中的条件是否符合A表中选定的ID?

sql - 带有 ORDER 和 LIMIT 子句的极慢 PostgreSQL 查询