我有像这样的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?
答案 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
,不确定原因是什么。