替换选择查询中的特定列数据?

时间:2016-12-16 05:39:38

标签: php mysql select

我正在尝试替换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查询返回的某些字段的值(假设许多列单独写出所有列的名称是不可行的)
  • 从单个表中的不同列的不同表中获取替换值。

我需要在一个查询中实现上述条件,但更改不应该在数据库中,只需要优化select查询的结果。

已经提到以下内容但无法帮助。

我使用phpmyadmin作为引擎,php作为实现语言。

1 个答案:

答案 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", .... );

并在数组中查找。这将使您的查询简短而甜蜜。这种方法的优点是每次添加新角色时都不需要更改查询。如果您获得了大量角色(比如几十个),您可能实际上需要一个单独的表。