Mysql 改进sql查询以排除项

Mysql 改进sql查询以排除项,mysql,sql,Mysql,Sql,是否可以改进以下查询: SELECT * FROM search s left join search_criteria sc ON s.id = sc.search_id WHERE sc.deleted_at IS NOT NULL AND s.id NOT IN ( SELECT s.id FROM search s left join search_criteria sa ON s.id

是否可以改进以下查询:

SELECT * 
FROM   search s left join search_criteria sc ON s.id = sc.search_id
WHERE  sc.deleted_at IS NOT NULL 
AND    s.id NOT IN
        (  SELECT s.id
           FROM   search s
                    left join search_criteria sa ON s.id = sc.search_id
           WHERE sc.deleted_at IS NULL
        )
GROUP BY s.id

谢谢

这取决于-如果默认数据库是kelformation,那么我认为您的查询有效地简化为:

SELECT  * 
FROM    search s left join search_criteria sc ON s.id = sc.search_id
WHERE   sc.deleted_at IS NOT NULL 
GROUP BY s.id

考虑下一个场景:

你有一个装满弹珠的盒子。什么会更快

  • 显示整个盒子(只需将其洒在桌子上)

  • 或者只显示带有绿点的大理石(在显示之前,您需要检查每个大理石)

现在,似乎您必须排除,所以您必须遵守它。
MySql存在内部查询问题。您需要将其更改为左连接。
请提供您的模式以获得更详细的答案。

尝试以下方法:

SELECT * 
FROM   search s
          left join search_criteria sc ON s.id = sc.search_id
          left join kelformation.search ks on (s.id=ks.id)
          left join search_criteria sa ON ks.id = sa.search_id
WHERE  sc.deleted_at IS NOT NULL and sc.deleted_at IS NULL 
AND    /*Primary key of kelformation.search */ is null
GROUP BY s.id

您是否可以包含表的模式?是否启用了keysBest of all。搜索(id,term)搜索条件(id,search,id,criterias,deleted,at…)是否包含主键?