嗨,我需要用相应的文本替换一个整数字段,这不是可变的事情,使用联接将为此浪费。
表结构是
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/