請問如何下query將一個布林型態的欄位內資料全部一起取OR,有這種函數嗎?
CREATE TABLE `AAA` (
`c` BOOLEAN NULL DEFAULT NULL,
`des` Text
);
INSERT INTO `AAA` (`des`) VALUES ('1');
INSERT INTO `AAA` (`des`) VALUES ('1');
INSERT INTO `AAA` (`des`) VALUES ('1');
INSERT INTO `AAA` (`des`) VALUES ('2');
INSERT INTO `AAA` (`des`) VALUES ('2');
INSERT INTO `AAA` (`c`, `des`) VALUES (TRUE, '2');
SELECT OR(`c`) AS ored_C FROM `AAA` WHERE `des` = '2';
程式碼中的OR(`c`)
是我假想的,想要將des
為2
的所有c
全部or
起來
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=572e0c99e7c3f8655a343af858826fa4
期望結果
由於des
為2
的c
有(NULL, NULL, TRUE)
or起來的意思是將這三個值取OR,也就是(NULL OR NULL OR TRUE)
,結果為TRUE
所以我想要的結果如下
ored_C
TRUE
問題不易了解 , 純屬猜測
CREATE TABLE `AAA` (
`c` BOOLEAN NULL DEFAULT NULL,
`des` Text
);
INSERT INTO `AAA` (`c`, `des`) VALUES (NULL,'1');
INSERT INTO `AAA` (`c`, `des`) VALUES (NULL,'1');
INSERT INTO `AAA` (`c`, `des`) VALUES (NULL,'1');
INSERT INTO `AAA` (`c`, `des`) VALUES (NULL,'2');
INSERT INTO `AAA` (`c`, `des`) VALUES (NULL,'2');
INSERT INTO `AAA` (`c`, `des`) VALUES (TRUE, '2');
-- CASE 1 : 取出 `des` = '2' 而且 `c` 只要含有 TRUE 就是為 TRUE
SELECT
CASE WHEN
SUM(CASE WHEN `c`=TRUE THEN 1 ELSE 0 END) >=1
THEN 'TRUE' ELSE 'FALSE' END AS ored_C,des
FROM `AAA` WHERE `des` = '2'
GROUP BY des;
-- CASE 2 : 取出 `des` = '2' 而且 `c` 不含有 FALSE 就是為 TRUE
SELECT
CASE WHEN
SUM(CASE WHEN `c`=TRUE OR `c` IS NULL THEN 0 ELSE 1 END) >=1
THEN 'FALSE' ELSE 'TRUE' END AS ored_C,des
FROM `AAA` WHERE `des` = '2'
GROUP BY des;