假設有一個表有兩列,名字和眼睛的顏色。SQL查詢 - 選擇一個,如果存在其他,從來都不是
在此表中你可能有:
Name - Green Eyes
Name - Brown Eyes
我想選擇綠色眼睛的名字都行,但如果不具有綠色的眼睛,然後我一個名字想用棕色眼睛選擇名字。我從不想爲給定名稱返回兩行。有關如何做到這一點的任何想法?任何幫助將不勝感激!
假設有一個表有兩列,名字和眼睛的顏色。SQL查詢 - 選擇一個,如果存在其他,從來都不是
在此表中你可能有:
Name - Green Eyes
Name - Brown Eyes
我想選擇綠色眼睛的名字都行,但如果不具有綠色的眼睛,然後我一個名字想用棕色眼睛選擇名字。我從不想爲給定名稱返回兩行。有關如何做到這一點的任何想法?任何幫助將不勝感激!
我會做
select *
from person
where person.eyecolor = 'green'
or ( person.eyecolor = 'brown'
and not exists(select null from person where person.eyecolor = 'green')
)
感謝您的回覆,但這並不適合我的情況。 – user1623682
@ user1623682你能解釋這個結果與你想要的結果有什麼不同嗎?我很好奇,因爲當你描述問題時,我相信這完全是解決方案;所以要麼我誤解你的問題,要麼我的邏輯不正確,無論如何我想知道! :D – corsiKa
你是對的,你的靈魂工作確實符合我所描述的內容,而且我用一個精簡的查詢來測試它,它在那裏也起作用。我不知道爲什麼它不適用於我的大型查詢,但我終於能夠通過在where子句中添加case語句來獲得我所需的內容「和asv.rating_source_id =(asv.rating_source_id in case ,3)then 1 else 3 end)「非常感謝您的幫助,下次我會更好地描述我需要的具體細節。 – user1623682
SELECT COALESCE(g.name, b.name) name,
COALESCE(g.eye_color, b.eye_color) eye_color
FROM (
SELECT DISTINCT name, eye_color
FROM eye_colors
WHERE eye_color = 'green'
) g
FULL OUTER JOIN (
SELECT DISTINCT name, eye_color
FROM eye_colors
WHERE eye_color = 'brown'
) b
ON b.name = g.name
感謝您的回答,我會讓你知道它是否適用,當我弄清楚如何將它與我的大型查詢合併。 – user1623682
IF EXISTS(SELECT * FROM Table WHERE Color='Green')
SELECT * FROM Table WHERE Color = 'Green'
ELSE
SELECT * FROM Table WHERE Color='Brown'
我會爲表上的(名字,顏色)的指數,然後再加入到本身,而是採取的主要「綠色」第一,然後尋找棕色
select
justName.Name,
coalesce(Green.Eye_Color, Brown.Eye_Color) as Eye_Color
from
(select distinct name
from eye_colors) justName
left join eye_colors as Green
on justName.Name = Green.Name
and Green.Eye_Color = 'Green'
left join eye_colors as Brown
on justName.Name = Brown.Name
and Brown.Eye_Color = 'Brown'
預查詢剛剛獲得不同的名稱,然後通過左連接表兩次,一次爲綠色,第二個由褐色。如果綠色記錄沒有匹配,則獲取棕色實例。
什麼是您的實際列名稱和值? – jnylen
看起來像http://stackoverflow.com/questions/12051863/is-it-possible-to-use-if-else-in-sql可能會讓你感興趣? – LSerni
實際的列名稱是EXTERNAL_ENTITY和RATING_SOURCE_NAME。這是一個更大的查詢的一部分。 rating_source_name的可能性是'S&P'和'Moody's'。有些實體對標準普爾和穆迪都有評級,如果是這樣的話,我只想看看標準普爾的行情。但是,如果實體沒有標準普爾評級,只有穆迪,那麼我想看看穆迪的評級。 – user1623682