Php 是否替换select查询中的特定列数据?

Php 是否替换select查询中的特定列数据?,php,mysql,select,Php,Mysql,Select,我试图替换select查询结果中的一列,如中所示 但与示例不同,表中有许多列,因此无法指定select查询中每一列的名称 我尝试了一些方法来达到同样的效果,但似乎没有一种方法是有效的 select *, (REPLACE(REPLACE(role_id,1,"admin"),2,"moderator") AS role_id from user; 或 在这里,我们假设角色_id只有两个可能的值,但是在某些实例中,它可能必须从另一个表(即持有不同id和对应于它们的值的不同表)获取数

我试图替换select查询结果中的一列,如中所示 但与示例不同,表中有许多列,因此无法指定select查询中每一列的名称

我尝试了一些方法来达到同样的效果,但似乎没有一种方法是有效的

select 
    *, (REPLACE(REPLACE(role_id,1,"admin"),2,"moderator") AS role_id  
from user;

在这里,我们假设角色_id只有两个可能的值,但是在某些实例中,它可能必须从另一个表(即持有不同id和对应于它们的值的不同表)获取数据

那么,有没有一种方法可以在单个查询中实现以下条件:-

  • 替换从select查询返回的某些字段的值(假设许多列单独写入所有列的名称是不可行的)
  • 从不同表中为单个表中的不同列获取替换值
我需要在一个查询中实现上述条件,但更改不应该出现在数据库中,只有select查询的结果需要优化

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


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

如果我正确理解了您的问题,那么使用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", .... );

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

谢谢你的帮助,我也尝试了case/when,但由于我需要从不同的表中动态获取替换数据,因此这没有多大帮助,实现php数组的另一个问题是,由于在许多平台上使用result,我需要优化sql查询,我已经根据您提供的信息回答了这个问题。最优化的解决方案是使用php数组,因为这根本不会对数据库造成任何压力。但是,如果对表进行了适当的索引,则对包含角色的表的联接也同样有效。无法在选择性字段中实现联接并替换获取的值。问题仍然存在!As联接返回正确的值,但仍然无法替换select查询返回的字段中的结果。您在说什么?你的问题没有任何关联
$roles = array("1" => "admin", "2" => "moderator", .... );