嗨,我正在嘗試從資料營獲得的不同版本的 SQL 查詢。
我收到的查詢是
SELECT
date,
-- Identify the home team as Barcelona or Real Madrid
case when hometeam_id = 8634 then 'FC Barcelona'
else 'Real Madrid CF' end as home,
-- Identify the away team as Barcelona or Real Madrid
case when awayteam_id = 8634 then 'FC Barcelona'
else 'Real Madrid CF' end as away
FROM matches_spain
WHERE (awayteam_id = 8634 OR hometeam_id = 8634)
AND (awayteam_id = 8633 OR hometeam_id = 8633);
我試圖調整它
的想法,“而不是為每個案例場景設定一個條件,讓我們通過將兩個條件與'and連接起來同時設定兩個條件, ”
我的查詢如下。
select date,
case when hometeam_id=8634 and awayteam_id = 8633 then 'FC Barcelona'
when hometeam_id=8633 and awayteam_id = 8634 then 'Real Madrid CF'
end as home,
case when hometeam_id=8633 and awayteam_id = 8634 then 'Real Madrid CF'
when hometeam_id=8634 and awayteam_id = 8633 then 'FC Barcelona'
end as away
from matches_spain
where (hometeam_id=8634 and awayteam_id=8633)
or (hometeam_id=8633 and awayteam_id=8634)
team_spain 表是這樣的
![[SQL CASE WHEN]當我同時指定兩個條件時,為什么 case when 不起作用?](https://img.uj5u.com/2022/05/31/829aac032f1e49888c49c2cb279382db.png)
和
match_spain 表是這樣的
![[SQL CASE WHEN]當我同時指定兩個條件時,為什么 case when 不起作用?](https://img.uj5u.com/2022/05/31/ee6b4e605640479f952ffce6d8f0d330.png)
“matches_spain”是某個賽季的足球比賽記錄,帶有主隊 ID 和客隊 ID。每個團隊都有自己的唯一 ID,唯一 ID 可以在 teams_spain 表中找到。
為什么我的替代代碼列印錯誤的輸出?
理想的輸出是
我的錯誤輸出是
![[SQL CASE WHEN]當我同時指定兩個條件時,為什么 case when 不起作用?](https://img.uj5u.com/2022/05/31/e5b4ed31cebd43b8a304ad8ba82f8bf8.png)
uj5u.com熱心網友回復:
除了我不明白你為什么要像以前那樣改變邏輯之外,你CASE WHEN對主隊和客隊都使用了相同的結構,所以當然,你會得到相同的結果。第二個CASE WHEN是不正確的。你寫了:
case when hometeam_id=8633 and awayteam_id = 8634 then 'Real Madrid CF'
when hometeam_id=8634 and awayteam_id = 8633 then 'FC Barcelona'
end as away
...反之亦然:
case when hometeam_id=8634 and awayteam_id = 8633 then 'Real Madrid CF'
when hometeam_id=8633 and awayteam_id = 8634 then 'FC Barcelona'
end as away
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/483433.html
