我在数据库中有两个表。表 1 存储用户,表 2 存储用户生成的数据。
由于表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
试用号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)
我做错了什么?
查询以获取所需记录:
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);
如果第二个表具有空值,则"试用 nr 1"很好,但它可能是字段值为空而不是空,因此您应该使用 or 子句 objecten.o_g_id = ''。最后一个查询将是: 从 GEBRUIKERS 中选择 gebruikers.g_id 左连接对象 在 objecten.o_g_id=gebruikers.g_id 其中 (objecten.o_g_id 为 NULL) 或 (trim(objecten.o_g_id) ='')