Mysql
根據測試選擇值
我有兩張桌子
user_session_logs
和blacklisted_ips
. 第一個用於記錄訪問日誌,第二個用於列入黑名單的 ip,並且兩個表都有一個名為 ip_address 的列。我需要從第一個表中選擇所有列,並選擇另一個欄位“列入黑名單”,說明該訪問日誌中的 ip 是否被列入黑名單。
我使用左連接和 COUNT() 函式來計算每個 IP 地址的出現次數,但這將返回一個數字,而我只需要一個布爾值。
這是我的 SQL 程式碼:
SELECT usl.*, COUNT(blip.id) as blacklisted FROM user_session_logs as usl LEFT JOIN blacklisted_ips as blip ON blip.ip_address = usl.ip_address GROUP BY usl.id
如果需要,請使用 CASE,但您可以隨時檢查 COUNT() > 0
SELECT usl.*, CASE WHEN COUNT(blip.id) > 0 THEN TRUE ELSE FALSE END as blacklisted FROM user_session_logs as usl LEFT JOIN blacklisted_ips as blip ON blip.ip_address = usl.ip_address GROUP BY usl.id;
SELECT usl.*, EXISTS( SELECT 1 FROM blacklisted_ips WHERE ip_address = usl.ip_address ) as blacklisted FROM user_session_logs as usl