簡體   English   中英

如果組中找到NULL值,則MySQL排除組

[英]Mysql exclude group if NULL value found in group

考慮以下數據樣本集:

| id | territory_id | signed_in
| 1  | 6            | 2010-12-22 01:00:00
| 2  | 6            | 2011-12-11 01:00:00
| 3  | 6            | 2013-03-13 01:00:00
| 4  | 6            | NULL
| 5  | 3            | 2013-03-06 01:00:00
| 6  | 3            | 2013-11-20 01:00:00

我想通過分組結果territory_id其中整個組不包含一排,其中signed_inNULL 或者基本上我想得到這些結果:

| 5  | 3            | 2013-03-06 01:00:00
| 6  | 3            | 2013-11-20 01:00:00

這是我當前的SQL看起來為最大signed_in各組同時加入到價值territories表:

SELECT `territories`.`id`, `territories`.`label`, `territories`.`type_id`, `territories`.`area_type_id`, `territories`.`map_embed_id`, `tsio`.`signed_in`
FROM `territories` INNER JOIN (
    SELECT territory_id, MAX(signed_in) signed_in
    FROM `territories_sign_in_out`
    GROUP BY territory_id) tsio ON `territories`.`id` = `tsio`.`territory_id`
WHERE `territories`.`type_id` = ?
ORDER BY `tsio`.`signed_in` ASC 
LIMIT 15

試試這個:

select * from territories
where territory_id not in (
    select territory_id from territories where signed_in is null);

這是一個查詢,應返回您要查找的結果:

SELECT *
FROM territories T
LEFT OUTER JOIN (SELECT DISTINCT T2.territory_id
                 FROM territories T2
                 WHERE T2.signed_in IS NULL) TN ON TN.territory_id = T.territory_id
WHERE TN.territory_id IS NULL

希望這會幫助你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM