我正在尝试学习如何在MYSQL中加入子查询, 我正在查询问题
对于提及具有HIGH技能的每种语言,请确定最常用的MEDIUM语言。
语言
AND Android
C C
JAV JAVA
CPP CPP
技能表
1 High
2 Medium
3 Low
强度
AND AW 2
JAVA AB 1
C AB 2
C++ AW 1
AB AB1
AW AW1
以下是我的表结构
CREATE TABLE STUDENT(
SNAME VARCHAR(2) NOT NULL,
SID int NOT NULL,
PRIMARY KEY(SID)
);
CREATE TABLE LANGUAGE(
LANG VARCHAR(50) NOT NULL,
LANGID INT NOT NULL,
PRIMARY KEY(LANGID)
);
CREATE TABLE SKILL(
SKID INT,
VALUE VARCHAR(50),
PRIMARY KEY (SKID)
);
CREATE TABLE STRENGTH(
SID INT NOT NULL,
LANGID INT NOT NULL,
SKID INT,
FOREIGN KEY (SID) REFERENCES STUDENT (SID),
FOREIGN KEY (LANGID) REFERENCES LANGUAGE (LANGID),
FOREIGN KEY (SKID) REFERENCES SKILL (SKID)
);
预期输出
prim | sec | count
JAVA | C | 1
CPP | Android | 1
我试过,但我无法实现加入,
答案 0 :(得分:0)
没有任何数据,很难说你的标准是什么,但根据数据结构,你会加入这样的表:
select *
from strength st
join student s
on s.sid = st.sid
join language l
on l.langid = st.langid
left outer join skill sk
on sk.skid = st.sklevel
学生和语言的内部联接是因为外键字段定义为非空,而sklevel字段可以为null,因此外部联接不会无意中筛选出您想要查看的任何记录。