我正在尝试从数据库中选择值,但我需要检查另一个数据库中的另一个值。
我创建了这段代码,但只得到 1 个结果,我不知道为什么:
SELECT `id` FROM `mc_region`
WHERE `is_subregion` = 'false'
AND lastseen < CURDATE() - INTERVAL 20 DAY
AND (SELECT id_region FROM mc_region_flags
WHERE flag <> 'expire'
AND id_region = mc_region.id
)
LIMIT 0, 30
我做错了什么?
@Edit
我想我知道为什么这段代码不起作用。在数据库 mc_region_flags 中,并非主数据库中的所有记录都有标志。
我想做以下事情:
1º 选择第一个数据库上的所有记录,其中不是 subregion 并且 lastseen 超过 20 天
2º 检查第一个数据库上的任何结果是否有标记'expire',如果是,它们不包含在结果中。
我不能在 1 个 SQL 代码中做到这一点吗?
@Edit2
我创建了这个模拟FULL JOIN
但似乎WHERE
不起作用的代码
SELECT *
FROM mc_region AS r RIGHT OUTER JOIN
mc_region_flags AS f ON r.id = f.id_region
UNION ALL
SELECT * from
mc_region AS r LEFT OUTER JOIN
mc_region_flags AS f
ON r.id = f.id_region
WHERE r.is_subregion = 'false'
AND f.flag = 'exipre'
AND r.lastseen < CURDATE() - INTERVAL 20 DAY
不工作的问题
f.flag
不是“过期”f.lastseen
不 > 20 天