我有两张table:
比赛
CREATE TABLE rounds (
`roundid` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`roundname` VARCHAR(45) NULL);
轮次
CREATE TABLE matches (
`matchid` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`matchwinner` VARCHAR(45) NULL,
`roundid` INT NOT NULL,
CONSTRAINT `fk_matches_rounds`
FOREIGN KEY (`roundid`)
REFERENCES `mydb`.`rounds` (`roundid`)
ON DELETE CASCADE
ON UPDATE CASCADE);
插入
INSERT INTO rounds (`roundid`, `roundname`) VALUES (1, 'Final');
INSERT INTO rounds (`roundid`, `roundname`) VALUES (2, '3rd place');
INSERT INTO matches (`matchid`, `matchwinner`, `roundid`) VALUES (1, 'fnatic', 1);
INSERT INTO matches (`matchid`, `matchwinner`, `roundid`) VALUES (2, 'astralis', 1);
INSERT INTO matches (`matchid`, `matchwinner`, `roundid`) VALUES (3, 'fnatic', 2);
INSERT INTO matches (`matchid`, `matchwinner`, `roundid`) VALUES (4, 'fnatic', 2);
INSERT INTO matches (`matchid`, `matchwinner`, `roundid`) VALUES (5, 'astralis', 1);
INSERT INTO matches (`matchid`, `matchwinner`, `roundid`) VALUES (6, 'astralis', 1);
我的问题:
SELECT
m.matchid,
m.matchwinner Team,
CASE r.roundname
WHEN r.roundname = 'Final' THEN '1st'
ELSE '2'
END Place
FROM
matches m
JOIN rounds r ON m.roundid = r.roundid
WHERE
r.roundname = 'Final'
UNION SELECT
m.matchid,
m.matchwinner Team,
CASE r.roundname
WHEN r.roundname = '3rd place' THEN '3rd'
ELSE '4th'
END Place
FROM
matches m
JOIN rounds r ON m.roundid = r.roundid
WHERE
r.roundname = '3rd place';
我想知道
某个特定团队取得了哪些成就(可能应该使用) HAVING m.matchwinner = 'fnatic'
)
matchid-团队-地点
1-fnatic-1档
3-fnatic-3档
4-fnatic-3档
所有团队都取得了哪些成就
matchid-团队-地点
1-fnatic-1档
2-阿斯特里利斯-1
3-fnatic-3档
4-fnatic-3档
等等
不明白为什么我的查询不起作用?
1条答案
按热度按时间c9x0cxw01#
这看起来像一个连接和条件逻辑:
要对所有团队获得相同的结果,只需删除
where
条款。db小提琴演示: