0

我在数据库中有两个表。Table1 存储用户,Table2 存储用户生成的数据。

由于表 1 中的一些用户出现错误,表 2 中没有任何数据。我想通知这些用户。

我正在使用 MySQL 以多种方式尝试此操作。但没有任何效果,因为 PHPmyAdmin 冻结或 PHP 超时。这可能是因为第一个表包含 28.000 行,而第二个表包含 80.000 行。我只需要最后5天。

试用版 1

SELECT gebruikers.g_id
FROM gebruikers LEFT JOIN objecten ON objecten.o_g_id=gebruikers.g_id
WHERE objecten.o_g_id IS NULL

解释选择

id  select_type     table   type    possible_keys   key     key_len     ref     rows    Extra
1   SIMPLE  gebruikers  index   NULL    PRIMARY     4   NULL    25227   Using index
1   SIMPLE  objecten    ALL     NULL    NULL    NULL    NULL    81002   Using where; Not ex

审判 nr 2

SELECT g_id FROM gebruikers
WHERE g_id NOT IN(SELECT o_g_id FROM objecten WHERE o_startdatum <= NOW() AND o_startdatum >=NOW() - INTERVAL 5 DAY)

我究竟做错了什么?

4

2 回答 2

0

如果第二个表具有空值,则“试用 nr 1”很好,但它可能是字段值空而不是空,因此您应该使用 or 子句 objecten.o_g_id = ''。最后的查询是: SELECT gebruikers.g_id FROM gebruikers LEFT JOIN objecten ON objecten.o_g_id=gebruikers.g_id WHERE (objecten.o_g_id IS NULL) or (trim(objecten.o_g_id) ='')

于 2013-01-29T13:28:52.063 回答
0

查询获取所需记录:

SELECT 
    gebruikers.g_id
FROM
    gebruikers
        LEFT JOIN
    objecten ON objecten.o_g_id = gebruikers.g_id
WHERE
    objecten.o_g_id IS NULL
        and o_startdatum <= NOW()
        AND o_startdatum >= (NOW() - INTERVAL 5 DAY);
于 2013-01-29T13:54:50.900 回答