Mysql 如何在select中重命名表的所有列?

Mysql 如何在select中重命名表的所有列?,mysql,select,Mysql,Select,我有两个列名称相同但数据不同的表。我想连接表,但访问两列(行[“phase1”]、行[“other_phase1”]):如何在select语句中使用以下小语句重命名/别名所有表: SELECT t_process.*,t_task_process.* AS other_column WHERE ... 我应该为所有21个专栏写一篇声明,还是有一个简洁的方法? 如果没有,则无法通过以下键将结果作为数组获得:t_process.phase1,任务过程阶段1? 我也不能在数据库中重命名它们。 原始

我有两个列名称相同但数据不同的表。我想连接表,但访问两列(行[“phase1”]、行[“other_phase1”]):如何在select语句中使用以下小语句重命名/别名所有表:

SELECT t_process.*,t_task_process.* AS other_column WHERE ...
我应该为所有21个专栏写一篇声明,还是有一个简洁的方法? 如果没有,则无法通过以下键将结果作为数组获得:t_process.phase1,任务过程阶段1?
我也不能在数据库中重命名它们。
原始查询是:

SELECT t_process.*,t_task_process.* 
FROM t_process,t_task_process 
WHERE t_process.id = t_task_process.id
AND (t_process.phase1<>t_task_process.phase1
OR t_process.phase2<>t_task_process.phase2
OR t_process.phase3<>t_task_process.phase3
OR t_process.phase4<>t_task_process.phase4
OR t_process.phase5<>t_task_process.phase5
OR t_process.phase6<>t_task_process.phase6
OR t_process.phase7<>t_task_process.phase7
OR t_process.phase8<>t_task_process.phase8
OR t_process.phase9<>t_task_process.phase9
OR t_process.phase19<>t_task_process.phase10
OR t_process.phase11<>t_task_process.phase11
OR t_process.phase12<>t_task_process.phase12
OR t_process.phase13<>t_task_process.phase13
OR t_process.phase14<>t_task_process.phase14
OR t_process.phase15<>t_task_process.phase15
OR t_process.phase16<>t_task_process.phase16
OR t_process.phase17<>t_task_process.phase17
OR t_process.phase18<>t_task_process.phase18
OR t_process.phase19<>t_task_process.phase19
OR t_process.phase20<>t_task_process.phase20    
OR t_process.phase21<>t_task_process.phase21)
选择t_进程。*,t_任务_进程。*
从t_进程,t_任务_进程
其中t_process.id=t_task_process.id
和(过程阶段1任务阶段1)
或t_过程。阶段2 t_任务\u过程。阶段2
或t_进程。阶段3 t_任务\u进程。阶段3
或t_进程。阶段4 t_任务\u进程。阶段4
或t_过程。阶段5 t_任务\u过程。阶段5
或t_过程。阶段6 t_任务\u过程。阶段6
或t_过程。阶段7T_任务\u过程。阶段7
或t_过程。阶段8T_任务\u过程。阶段8
或t_过程。阶段9T_任务\u过程。阶段9
或t_过程。阶段19 t_任务\u过程。阶段10
或t_过程。阶段11T_任务\u过程。阶段11
或t_过程。阶段12T_任务\u过程。阶段12
或t_过程。阶段13T_任务\u过程。阶段13
或t_过程。阶段14T_任务\u过程。阶段14
或t_过程。阶段15T_任务_过程。阶段15
或t_过程。阶段16 t_任务\u过程。阶段16
或t_过程。阶段17T_任务\u过程。阶段17
或t_过程。阶段18T_任务\u过程。阶段18
或t_过程。阶段19 t_任务\u过程。阶段19
或t_进程。阶段20 t_任务\u进程。阶段20
或t_过程。阶段21T_任务_过程。阶段21)

mysql没有力量拥有我想要的东西。我只是想知道是否有一种简洁的方法。

您可以为第一个表中的所有列保留
*
,并为表2中的列显式指定别名

SELECT t1.*,
       t2.phase1 phase1_2,
       t2.phase2 phase2_2,
       t2.phase3 phase3_2,
       ...
  FROM t_process t1 JOIN t_task_process t2 
    ON t1.phase1 <> t2.phase1
    OR t1.phase2 <> t2.phase2
    OR t1.phase3 <> t2.phase3
    ...
选择t1.*,
t2.1相1第2相,
t2.2相2_2,
t2.3相3相2,
...
从t_进程t1加入t_任务t_进程t2
在t1.phase1 t2.phase1上
或t1.phase2.t2.phase2
或t1.phase3 t2.phase3
...


附带说明:使用标准的
JOIN
语法。

我通常只是将模式剪切粘贴到记事本中,然后剪切粘贴t1。t2。等在他们面前,然后剪切和粘贴整个块,我当然不会键入它。您将垂直向下,因此第一个波浪的切入粘贴具有t1。请在剪贴簿中公布您的全部查询。不可理解。您可以编写一个存储过程,使用
信息\u模式
生成动态查询。与您的问题无关,我认为您的WHERE子句是错误的。它应该是
其中t_process.id=t_task_process.id和(t_process.phase1t_task_process.phase1或t_process.phase2t_task_process.phase2或…)
没关系,你确定没有简洁的方法吗?@HPM我不知道。但这样你只需要显式地指定其中的一半。有些数据库产品在发现重复的列时会自动重新命名列,但这是非标准行为,因此既不是在任何地方都嵌入,也不是用常规语法构建的。