【问题标题】:Create view SQL with same columns in two different tables在两个不同的表中创建具有相同列的视图 SQL
【发布时间】:2021-09-06 12:22:08
【问题描述】:

我有两个具有公共列的表,我需要创建一个包含两个表的所有属性的视图,但是在尝试这样做时

CREATE VIEW prova AS (
    SELECT * 
    FROM sample s, statistics stat 
    WHERE s.sample_ID = stat.sample_ID

CREATE VIEW allData AS (
    SELECT * 
    FROM Sample s 
        INNER JOIN statistics stat vs ON s.sample_ID = stat.sample_ID)

给出错误,因为列 sample_ID 重复了两次。 如何在不一一指定所有属性的情况下创建视图?

谢谢

【问题讨论】:

    标签: mysql sql view


    【解决方案1】:

    首先,从不FROM 子句中使用逗号。 始终使用正确、明确、标准、可读的JOIN语法。

    其次,明确定义视图的所有列通常是最佳实践。这可以防止以后出现问题。

    但是,这不是你的问题。如果唯一重复的列是JOIN 键,则可以使用USING

    CREATE VIEW prova AS
        SELECT *
        FROM sample s JOIN
             statistics stat 
             USING (sample_ID);
    

    如果还有其他重复的列,您仍然会遇到问题。一种方便的方法是从一个表中获取所有列并列出其他列:

    CREATE VIEW prova AS
        SELECT s.*, stat.col1, stat.col2, . . .
        FROM sample s JOIN
             statistics stat 
             USING (sample_ID);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 2012-12-13
      • 1970-01-01
      • 2014-05-09
      相关资源
      最近更新 更多