假设我要查询/联接两个表,每个表具有某些相同的字段名称:
SELECT * FROM sales1 s1 JOIN sales2 s2 USING (id)
是否可以为每个表的列加上表名(或其他前缀),例如,而不是获取诸如以下的数据:
id id product product etc.
它看起来像:
s1_id s2_id s1_product s2_product etc.
是否没有为每个字段手动执行操作?
答案 0 :(得分:2)
在MySQL中,您可以执行以下操作:
EXPLAIN SELECT * FROM sales1 s1 JOIN sales2 s2 USING (id);
其次:
SHOW WARNINGS;
这将为您显示原始查询的重写版本,其中带有引号的全限定列和表名称如下:
/* select#1 */ select `dbname`.`s1`.`id` AS `id`,`dbname`.`s1`.`product` AS `product`,`dbname`.`s2`.`product` AS `product` from `dbname`.`sales1` `s1` join `dbname`.`sales2` `s2` where (`dbname`.`s2`.`id` = `dbname`.`s1`.`id`)
然后,您需要在之后进行一些正则表达式查找替换。是的,请手动执行。