首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL中创建自联接视图

问如何在SQL中创建自联接视图
EN

Stack Overflow用户
提问于 2020-02-22 16:56:50
回答 2查看 386关注 0票数 1

在尝试创建以下查询的视图时,我会遇到一个错误。我有一张名叫student的桌子,我想要一个名为birthday_twins的视图,里面有两个生日双胞胎的名字和道布。

代码语言:javascript
复制
CREATE VIEW birthday_twins AS
SELECT s.student_name,p.student_name,s.date_of_birth 
FROM student s,student p 
WHERE s.student_id <> p.student_id AND s.date_of_birth=p.date_of_birth 
GROUP BY s.date_of_birth;

错误代码: 1060重复列名'student_name‘

我对sql完全陌生。有人能帮我解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-22 17:17:47

如果您希望在同一天出生的人成双成对,请使用:

代码语言:javascript
复制
CREATE VIEW birthday_twins AS
    SELECT s1.student_name as name1,
           s2.student_name as name2,
           s1.date_of_birth 
    FROM student s1 JOIN
         student s2
         ON s1.student_id < s2.student_id AND 
            s1.date_of_birth = s2.date_of_birth ;

备注:

  • 从不在FROM子句中使用逗号。始终使用正确、显式、necessary.
  • Columns标准的JOIN语法。视图返回的
  • NoJOIN必须有不同的名称,所以使用as来重命名列。
  • 使用<而不是<>,这样就不会得到反向对(除非您想两次列出对)。H 216F 217
票数 1
EN

Stack Overflow用户

发布于 2020-02-22 16:59:41

您需要为列名提供别名,以便视图能够区分字段名。即:

代码语言:javascript
复制
CREATE VIEW birthday_twins AS 
SELECT s.student_name name1,p.student_name name2,s.date_of_birth 
FROM student s,student p 
WHERE s.student_id <> p.student_id 
AND s.date_of_birth=p.date_of_birth 
GROUP BY s.date_of_birth;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60354516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档