2016-03-01 45 views
0

我有一个包含布尔值的几个字段的表。有没有办法在MySQL中合并布尔值字段?

我需要3个字段合并成一个,只有当它们全部3个都是真实的。

我正在考虑JOIN,但它看起来不能做我所需要的。

------------------------------------------------------------ 
| Email address| permission1 | permission2 | permission3 
------------------------------------------------------------ 
| [email protected]|  1  |  0  |  1 
------------------------------------------------------------ 
| [email protected]|  1  |  1  |  1 
------------------------------------------------------------ 

我所期望的结果,也许是一个新的表看起来像这样:

-------------------------------- 
| Email address| permissionMerge 
-------------------------------- 
| [email protected]|  0  | 
-------------------------------- 
| [email protected]|  1  | 
-------------------------------- 
+2

你能提供一个你想要的例子吗?即提供原始数据的示例以及您希望查询结果的样子。 – kojow7

+0

编写数据库模式请帮助您 – Greg

+1

您可能可以使用MySQL case命令执行此操作。所以,你会选择返回0或1的情况。 – Greg

回答

1
Select `Email adderss`,(permission1 and permission2 and permission3) as permissionMerge from table 
+0

仅供参考,这通常不会在其他数据库引擎(如Oracle或SQL Server)中正常工作,但它工作正常MySQL的。 –

2

你可以使用CASE syntax

SELECT `email address`, 
CASE WHEN `permission1` = 1 
    AND `permission2` = 1 
    AND `permission3` = 1 
THEN 1 
ELSE 0 END AS 'permissionMerge' 
FROM `Table` 

你也可以做到这一点的是方式:

SELECT `email address`, 
CASE WHEN SUM(`permission1`,`permission2`,`permission3`) = 3 
THEN 1 
ELSE 0 END AS 'permissionMerge' 
FROM `Table` 
GROUP BY `email address` 
1

取决于数据的质量,你可以逃脱这样简单的事情如:

SELECT address, 
CASE SUM(permission1, permission2, permission3) 
    WHEN 3 THEN 1 
    ELSE 0 
END AS permissionMerge 
FROM undisclosed_table 

...或者你需要的东西更强大的:

SELECT address, 
CASE 
    WHEN permission1 IS TRUE AND permission2 IS TRUE AND permission3 IS TRUE THEN 1 
    ELSE 0 
END AS permissionMerge 
FROM undisclosed_table 

您可以生成一个新的表格:

CREATE TABLE table_with_duplicate_data 
SELECT address, 
CASE 
    WHEN permission1 IS TRUE AND permission2 IS TRUE AND permission3 IS TRUE THEN 1 
    ELSE 0 
END AS permissionMerge 
FROM undisclosed_table 

......我认为我会建议它:它会浪费存储空间,并且需要保持数据是最新的。如果输入太多,您可以创建一个view或(自MySQL/5.7.5)a generated column

相关问题