Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql表中操作属性值_Mysql - Fatal编程技术网

在mysql表中操作属性值

在mysql表中操作属性值,mysql,Mysql,我有一个如下形式的mysql表: id valA valB 1 0 0 2 0 1 3 1 0 4 1 1 And it goes on like that.. 属性valA和valB将仅具有布尔值。我想找出一个mysql查询,它将生成以下输出: id result 1 A 2 B 3 C 4 D 这里使用的逻辑是: if valA =

我有一个如下形式的mysql表:

id    valA    valB
1      0       0
2      0       1
3      1       0
4      1       1

And it goes on like that..
属性valAvalB将仅具有布尔值。我想找出一个mysql查询,它将生成以下输出:

id    result
1       A
2       B
3       C
4       D
这里使用的逻辑是:

if valA = 0 and valB = 0 then result = A
if valA = 0 and valB = 1 then result = B
if valA = 1 and valB = 0 then result = C
if valA = 1 and valB = 1 then result = D
我发现这有点相似,但没有把它和这个联系起来

提前感谢您的帮助。

像这样的事吗

select
    case 
        when valA = 0 and valB = 0 then 'A'
        when valA = 0 and valB = 1 then 'B'
        when valA = 1 and valB = 0 then 'C'
        when valA = 1 and valB = 1 then 'D'
        end as result
from 
    table

选择id,当valA=0和valB=0时选择case,当valA=0和valB=1时选择'A',当valA=1和valB=0时选择'B',当valA=1和valB=1时选择'C',然后选择'D',作为表1的结果

如果在二进制系统中将valA和valB作为两位,然后,在将它们转换为十进制后,您可以使用结果作为某个列表的索引

SELECT id, ELT((2*valA+valB+1),'A','B','C','D') AS my_result FROM table

虽然这很聪明(我喜欢聪明),但这也不必要地复杂。我认为这比大型数据集上的
CASE
语句要慢得多。一个好的答案既包含示例代码,也包含关于为什么答案有效的解释。这里的代码格式也有点不尽如人意。@Tanis.7x在本例中,“为什么”应该是,“因为这是SQL语言构造,旨在实现您想要的功能。”