代码之家  ›  专栏  ›  技术社区  ›  GuillaumeRZ

创建视图:MySQL内部联接别名

  •  0
  • GuillaumeRZ  · 技术社区  · 6 年前

    我正在尝试在MySQL中创建视图,但出现了一个错误: Duplicate column name 'profil_id'

    这是我的要求:

    CREATE VIEW my_view
    AS SELECT * FROM `profils` AS `p` 
    INNER JOIN `table_A` ON table_A.profil_id = p.id 
    INNER JOIN `table_B` ON table_B.profil_id = p.id
    WHERE p.id = '1';
    

    我知道这是因为我必须为profil\u id创建别名,但我不知道如何使用 INNER JOIN 。。。

    INNER JOIN `table_A` ON table_A.profil_id = p.id AS table_A_profil_id
    

    不起作用。

    谢谢你的帮助。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sebastian Brosch Navjyot    6 年前

    您可以使用以下选项:

    CREATE VIEW my_view AS
        SELECT `p`.*, `table_A`.`profil_id` AS table_A_profil_id, `table_B`.`profil_id` AS table_B_profil_id
        FROM `profils` AS `p` 
            INNER JOIN `table_A` ON table_A.profil_id = p.id 
            INNER JOIN `table_B` ON table_B.profil_id = p.id
        WHERE p.id = '1';
    

    您不能使用 * 在这种情况下,因为你 INNER JOIN 具有相同列名的两个表。您需要列出这两个表的列,并为重复的列名设置别名。