mysql:重命名联接的所有字段

mysql:重命名联接的所有字段,mysql,sql,Mysql,Sql,我没有发现任何关于那个的东西 我的问题是: SELECT p.*, pa.*, a.* FROM produit p LEFT OUTER JOIN produit_attribut pa ON p.id=pa.id_produit LEFT OUTER JOIN attribut a ON a.id=pa.id_attribut ORDER BY p.id,a.id; 但问题是它返回列 with the same name: +----+------------+-----+-------

我没有发现任何关于那个的东西

我的问题是:

SELECT p.*, pa.*, a.*
FROM produit p
LEFT OUTER JOIN produit_attribut pa
ON p.id=pa.id_produit
LEFT OUTER JOIN attribut a
ON a.id=pa.id_attribut
ORDER BY p.id,a.id;
但问题是它返回列

with the same name:

+----+------------+-----+------------+-------------+------+-----+----+----+
| id | titre      | desc| id_produit | id_attribut | id   | desc| val| abb|
+----+------------+-----+------------+-------------+------+-----+----+----+
|  1 | Anchois    | Sauc|          1 |           1 |    1 | Nomb| 2  | Nb |  
|  2 | Fromage    | Sauc|          2 |           1 |    1 | Nomb| 2  | Nb |  
|  3 | Mozzarella | Sauc|          3 |           1 |    1 | Nomb| 2  | Nb |  
|  4 | Jambon     | Sauc|          4 |           1 |    1 | Nomb| 2  | Nb |  
|  5 | Roquefort  | Sauc|          5 |           1 |    1 | Nomb| 2  | Nb |  
|  6 | Royale     | Sauc|          6 |           1 |    1 | Nomb| 2  | Nb |  
我想知道是否有一种方法可以重命名表的所有字段,类似于(我知道下面的sql不起作用):

顺便说一句,我知道我可以做如下事情:

SELECT
  p.id AS p_id,
  p.titre AS p_titre,
  p.description AS p_description,
  p.prix AS p_prix,
  p.text_detail AS p_text_detail,
  p.img_petite AS p_img_petite,
  p.img_grande AS p_img_grande,
  pa.id_produit AS pa_id_produit,
  pa.id_attribut AS pa_id_attribut,
  a.id AS a_id,
  a.description AS a_description,
  a.valeur AS a_valeur,
  a.abbreviation AS a_abbreviation
FROM produit p
LEFT OUTER JOIN produit_attribut pa
ON p.id=pa.id_produit
LEFT OUTER JOIN attribut a
ON a.id=pa.id_attribut
ORDER BY p_id,a_id;
但我想避免这种情况


我希望请求是通用的,因为我将在Php中使用此请求,它涉及通用CRUD组件(和嵌套表)


有办法吗?没有,没有办法。但是,无论如何,您应该尽量避免使用
*
来选择列,因此通过此重构,您可以摆脱
*
这两个列,并可以向需要添加别名的所有列添加别名。一石二鸟

没有-没有-别名是按列完成的。我不认为有办法做到这一点。在任何情况下,最好明确说明您选择的列,而不是使用
*
,因为它允许您确定列顺序,并防止在以后添加大的二进制列时出现问题更改模式中的列名!:pI希望请求是通用的,因为我将在Php中使用它,它是关于通用CRUD组件的。
SELECT
  p.id AS p_id,
  p.titre AS p_titre,
  p.description AS p_description,
  p.prix AS p_prix,
  p.text_detail AS p_text_detail,
  p.img_petite AS p_img_petite,
  p.img_grande AS p_img_grande,
  pa.id_produit AS pa_id_produit,
  pa.id_attribut AS pa_id_attribut,
  a.id AS a_id,
  a.description AS a_description,
  a.valeur AS a_valeur,
  a.abbreviation AS a_abbreviation
FROM produit p
LEFT OUTER JOIN produit_attribut pa
ON p.id=pa.id_produit
LEFT OUTER JOIN attribut a
ON a.id=pa.id_attribut
ORDER BY p_id,a_id;