我正在尝试替换select查询结果中的列,如中所示 This reference但与示例不同,我在表中有很多列,因此我无法在select查询中指定每列的名称。
我尝试了一些方法来达到同样的效果,但似乎没有效果。
select
*, (REPLACE(REPLACE(role_id,1,"admin"),2,"moderator") AS role_id
from user;
或
Select *
from user
where role_id = (select REPLACE(role_id,1,"admin") as role_id from user;
这里我们假设只有两个可能的role_id值,但在某些情况下,它可能必须从另一个表中获取数据,即一个不同的表,它包含不同的ID和与之对应的值。
有没有办法在单个查询中达到以下条件: -
我需要在一个查询中实现上述条件,但更改不应该在数据库中,只需要优化select查询的结果。
已经提到以下内容但无法帮助。
我使用phpmyadmin作为引擎,php作为实现语言。
答案 0 :(得分:1)
如果我已正确理解您的问题,则使用CASE / WHEN
会更容易SELECT *,
CASE WHEN role_id = 1 THEN "admin" WHEN role_id = 2 THEN "moderator" END AS role_id
FROM user;
但更容易在PHP中使用数组,
$roles = array("1" => "admin", "2" => "moderator", .... );
并在数组中查找。这将使您的查询简短而甜蜜。这种方法的优点是每次添加新角色时都不需要更改查询。如果您获得了大量角色(比如几十个),您可能实际上需要一个单独的表。