■ はじめに
* テーブルのBOOL(BIT)項目に対して、GROUP BYした後に論理演算 OR をしたかったので調べてみた
【MySQL】解決案
* BIT_OR() ってのがある公式サイト
https://dev.mysql.com/doc/refman/5.6/ja/group-by-functions.html
■ サンプルデータ
* トイレ掃除チェックリストで考える。 => 一日中のうち、一回でもダメ(NG=true)だったらアウト
テーブル
-- トイレ掃除チェックリスト CREATE TABLE `toilet_clean_checklist` ( `check_datetime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'チェック日時', `ng` BIT(1) NOT NULL DEFAULT b'0' COMMENT 'NG:ダメだったら 1(true)', `inspector` VARCHAR(10) NULL DEFAULT NULL COMMENT 'チェックした人' ) ENGINE=InnoDB ;
データ
REPLACE INTO `toilet_clean_checklist` (`check_datetime`, `ng`, `inspector`) VALUES ('2018-04-10 09:30:37', b'0', 'Mike'), ('2018-04-10 17:31:08', b'0', 'Tom'), ('2018-04-10 21:31:29', b'0', 'Sam'), ('2018-04-11 08:21:52', b'0', 'Mike'), ('2018-04-11 11:12:34', b'0', 'Tom'), ('2018-04-11 21:33:35', b'1', 'Sam'), ('2018-04-12 08:33:48', b'1', 'Tom'), ('2018-04-12 11:12:17', b'1', 'Mike');データ表示
check_datetime | ng | inspector -------------------+----+----------- 2018-04-10 09:30:37| 0 | Mike 2018-04-10 17:31:08| 0 | Tom 2018-04-10 21:31:29| 0 | Sam ------------------------------------- 2018-04-11 08:21:52| 0 | Mike 2018-04-11 11:12:34| 0 | Tom 2018-04-11 21:33:35| 1 | Sam ------------------------------------- 2018-04-12 08:33:48| 1 | Tom 2018-04-12 11:12:17| 1 | Mike