嗨,我需要用相应的文本替换一个整数字段,这不是可变的事情,使用联接将为此浪费。

表结构是

CREATE TABLE `mesas_cab` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `cid` int(11) DEFAULT NULL,
  `vid` int(11) DEFAULT NULL,
  `status` int(11) DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


我的查询是

SELECT
mesas_cab.id,
mesas_cab.cid,
mesas_cab.vid,
mesas_cab.status,
usuarios.NOME,
clientes.RAZAOSOCIAL,
CASE mesas_cab.status
    WHEN 0 THEN 'Livre'
    WHEN 1 THEN 'Ocupada'
    WHEN 2 THEN 'Fechada'
END CASE as status_str
FROM
mesas_cab
LEFT JOIN usuarios ON mesas_cab.vid = usuarios.CODIGO
LEFT JOIN clientes ON mesas_cab.cid = clientes.CODIGO


我已经看到了这个答案
replace integer with string in query

但是我的查询仍然给我语法错误

[SQL] SELECT
mesas_cab.id,
mesas_cab.cid,
mesas_cab.vid,
mesas_cab.status,
usuarios.NOME,
clientes.RAZAOSOCIAL,
CASE mesas_cab.status
    WHEN 0 THEN 'Livre'
    WHEN 1 THEN 'Ocupada'
    WHEN 2 THEN 'Fechada'
END CASE as status_str
FROM
mesas_cab
LEFT JOIN usuarios ON mesas_cab.vid = usuarios.CODIGO
LEFT JOIN clientes ON mesas_cab.cid = clientes.CODIGO

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CASE as status_str
FROM
mesas_cab
LEFT JOIN usuarios ON mesas_cab.vid = usuar' at line 12


但是当我删除整个case语句时,查询几乎按计划进行(联接正常)

最佳答案

case语句似乎未正确完成。正确的格式通常是
案件
  当x = 1时为'y'
  当x = 2然后是'z'
  否则为空
结束为column_name

所以我们的情况应该是


SELECT
mesas_cab.id,
mesas_cab.cid,
mesas_cab.vid,
mesas_cab.status,
usuarios.NOME,
clientes.RAZAOSOCIAL,
CASE
    WHEN mesas_cab.status = 0 THEN 'Livre'
    WHEN mesas_cab.status = 1 THEN 'Ocupada'
    WHEN mesas_cab.status = 2 THEN 'Fechada'
    ELSE NULL
END as status_str
FROM
mesas_cab
LEFT JOIN usuarios ON mesas_cab.vid = usuarios.CODIGO
LEFT JOIN clientes ON mesas_cab.cid = clientes.CODIGO

关于mysql - MySQL SELECT带大小写以文本替换整数字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60039462/

10-10 05:06