我试图在显示信息之前格式化我的 sql 中的所有数据
我的两个连接都工作正常,我有一段数据(状态)具有关联的标题以与值一起使用,但 CASE
语句不起作用。我目前有一个执行此数据转换的 PHP swtich 语句,但如果可能的话,我想在 SQL 中执行此操作
SELECT
l.leadid, l.companyname, l.status, l.dateadded, addedby.name AS addedby, assignedto.name AS assignedto, l.address, l.city, l.prov, l.country, l.postalcode,
l.phone, l.fax, l.facebook, l.twitter, l.youtube, l.instagram, l.website, l.logo
FROM leads l
INNER JOIN staff addedby ON l.addedby = addedby.staffid
INNER JOIN staff assignedto ON l.assignedto = assignedto.staffid
CASE l.status
WHEN l.status = 7 THEN l.status = 'Converted'
WHEN l.status = 6 THEN l.status = 'Hot'
WHEN l.status = 5 THEN l.status = 'Warm'
WHEN l.status = 4 THEN l.status = 'Open'
WHEN l.status = 3 THEN l.status = 'NEW'
WHEN l.status = 2 THEN l.status = 'Cold'
ELSE l.status = 'Dead'
END
WHERE l.leadid = $id
最佳答案
- 你希望你的
CASE
在SELECT
子句中 - 您的
CASE
语法无效 - 作为替代方案,您可以使用 MySQL(因为您的问题用
mysql
标记)特定的不太冗长的函数ELT()
话虽这么说,你可以做任何一个
SELECT
l.leadid, l.companyname,
CASE l.status
WHEN 7 THEN 'Converted'
WHEN 6 THEN 'Hot'
WHEN 5 THEN 'Warm'
WHEN 4 THEN 'Open'
WHEN 3 THEN 'NEW'
WHEN 2 THEN 'Cold'
ELSE 'Dead'
END status,
l.dateadded, addedby.name AS addedby,
assignedto.name AS assignedto, l.address,
l.city, l.prov, l.country, l.postalcode,
l.phone, l.fax, l.facebook, l.twitter,
l.youtube, l.instagram, l.website, l.logo
FROM leads l JOIN staff addedby
ON l.addedby = addedby.staffid JOIN staff assignedto
ON l.assignedto = assignedto.staffid
WHERE l.leadid = $id
或
SELECT
l.leadid, l.companyname,
IFNULL(ELT(l.status - 1, 'Cold', 'New', 'Open', 'Warm', 'Hot', 'Converted'), 'Dead') status,
l.dateadded, addedby.name AS addedby,
assignedto.name AS assignedto, l.address,
l.city, l.prov, l.country, l.postalcode,
l.phone, l.fax, l.facebook, l.twitter,
l.youtube, l.instagram, l.website, l.logo
FROM leads l JOIN staff addedby
ON l.addedby = addedby.staffid JOIN staff assignedto
ON l.assignedto = assignedto.staffid
WHERE l.leadid = $id
这是 SQLFiddle 演示(两种情况)
关于mysql - 在 SQL 连接语句中添加 case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21058727/