SQL:如何在JOIN中为列名添加前缀?

时间:2018-02-26 14:50:58

标签: mysql sql

我有像这样的SQL查询

SELECT * FROM phlegm WHERE JOIN mucus ON phlegm.id = mucus.id JOIN snot ON phlegm.id = snot.id

问题是这些表包含几个名称相同的列。

例如,所有3个表都包含名为test

的列

如果我在PHP中检索查询结果,那么我只会得到一个名为test($query->get_result()->fetch_object()->test;)的值,因为其他两个值会被覆盖。

是否有某种方法可以编辑该查询,以便为表中的所有列添加前缀?例如,来自表粘液的列测试将在查询中作为mucus_test引用,而来自phlegm的列测试将是phlegm_test。

一种方法是做

SELECT phlegm.test as phlegm_test, mucus.test as mucus_test FROM phlegm...

但是我有很多列和表,如果我必须逐个命名每个字段,它会使查询比中国长城更长。

那么有没有办法添加前缀en masse?

1 个答案:

答案 0 :(得分:0)

使用aliasing检索所有三个表中关联的所有值。如果您只想引用特定列,请使用alias_name.column_name代替p.*,其中*表示属于别名所关联的表的所有列(即.p指的是痰)。

SELECT p.*, m.*, s.* 
FROM phlegm p 
JOIN mucus m ON p.id = m.id 
JOIN snot s ON p.id = s.id;

我从上面的原始查询中移除了WHERE,不确定原因是什么。