MySQL什么时候没有工作

时间:2018-05-15 09:54:41

标签: mysql where

我有两个表,一个名为st_grid,其中包含足球匹配,另一个表是st_compiled,本质上是st_grid的副本,但是在st_compiled中放置行的过程非常密集,所以我想放置数据一次一排。这两个表与相关列相似:

  1. st_grid
    • ID
    • league_id
    • fixture_date
  2. inplay_fixture_compiled
    • inplay_fixture_compiled_id
    • grid_id
  3. 我想从st_grid中选择一行,其中st_compiled ON grid_id中没有对应的行,但我没有运气。我已经查找了各种查询并尝试了这个查询

                        SELECT g.id
                        FROM st_grid g
                        WHERE NOT EXISTS
                                    (SELECT i.grid_id
                                    FROM inplay_fixture_compiled i
                                    WHERE g.id = i.grid_id)
                        AND g.league_id = '15'
    

    但它无法正常工作,所有发生的事情都是当我尝试运行它时页面挂了几分钟。 st_grid中有大约170,000行(但每个league_id最多有600行)和st_compiled中的10,000行,但我不相信这是一个巨大的数额。

    希望有意义,任何帮助都非常感激。 P

2 个答案:

答案 0 :(得分:0)

为什么不尝试加入这个案例来获取st_grid中st_compiled中尚不存在的所有数据。

例如;

select grid_id 
from st_grid t1 
left join st_compiled t2 on t1.grid_id = st_compiled.grid_id 
where t2.grid_id is null

答案 1 :(得分:0)

 SELECT g.grid_id
 FROM st_grid g
 LEFT JOIN inplay_fixture_compiled i ON (g.id = i.grid_id) 
 WHERE g.league_id = '15' and i.grid_id is null.

您可以使用LEFT JOIN关键字连接这些表并过滤掉NULL,但这可能不如使用NOT EXISTS效率。