在两个不同的表中创建具有相同列的视图 SQL
Posted
技术标签:
【中文标题】在两个不同的表中创建具有相同列的视图 SQL【英文标题】:Create view SQL with same columns in two different tables 【发布时间】: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 重复了两次。 如何在不一一指定所有属性的情况下创建视图?
谢谢
【问题讨论】:
【参考方案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);
【讨论】:
以上是关于在两个不同的表中创建具有相同列的视图 SQL的主要内容,如果未能解决你的问题,请参考以下文章