在mysql表中操作属性值
我有一个如下形式的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 =
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 = 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语言构造,旨在实现您想要的功能。”