[英]Select value in mysql but check another database at clause WHERE
我正在嘗試從數據庫中選擇值,但是我需要檢查另一個數據庫中的另一個值。
我創建了此代碼,但只得到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
我做錯了什么?
@編輯
我想我知道為什么此代碼無法正常工作。 在數據庫mc_region_flags中,並非主數據庫中的所有記錄都具有標志。
我要執行以下操作:
1º選擇第一個數據庫中的所有記錄,該記錄不在子區域中且持續時間超過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
不是'expire' f.lastseen
時間不超過20天 在內部嵌套之前,選擇add:id in(選擇...)
更新
SELECT *
FROM `mc_region` AS r LEFT JOIN
`mc_region_flags` AS f ON r.`id` = f.`id_region`
WHERE r.`is_subregion` = 'false' AND
r.`lastseen` < CURDATE() - INTERVAL 20 DAY AND
COALESCE(f.`flag`, '-') <> 'expire'
LIMIT 0, 30;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.