2012-03-29 104 views
3

如何使用MySQL的如何子查詢結果用mysql

SELECT  
    p.`id`, p.`name`, p.`class_name`, cpd.`status_team`, 
    cpd.`home`, cpd.`guest`, cpd.`mvp`, cpd.`oscar`, 
    cpd.`wam`, cpd.`status`, cpd.`added_date`, 
    (SELECT result FROM result_cards WHERE `id` = cpd.`result`) AS DEFAULT(`result`) 
FROM `cron_players_data` cpd 
INNER JOIN `players` p ON cpd.`player_id` = p.id 
WHERE cpd.`added_date` = '2012-03-29' AND cpd.team_id = '15' 

設置默認 VALUE在查詢結果集的默認值,當我刪除此DEFAULT()查詢將正常執行。其實我想用默認結果值爲0或幫助肯定是讚賞

enter image description here

回答

1

您應該移動的子查詢到加盟。但是我無法理解你想用DEFAULT()做什麼。你需要解釋你想要達到的目標。

SELECT  
    p.`id`, p.`name`, p.`class_name`, cpd.`status_team`, 
    cpd.`home`, cpd.`guest`, cpd.`mvp`, cpd.`oscar`, 
    cpd.`wam`, cpd.`status`, cpd.`added_date`, 
    IFNULL(rc.`result`, 0) AS `result` 
FROM `cron_players_data` cpd 
INNER JOIN `players` p 
    ON cpd.`player_id` = p.id 
LEFT JOIN result_cards rc 
    ON cpd.`result` = rc.id 
WHERE cpd.`added_date` = '2012-03-29' 
AND cpd.team_id = '15' 
+0

您的查詢工作或我發現我在你的指導感謝名單的幫忙解答分享您的經驗 – 2012-03-29 16:36:55

+0

IF NULL是Z我的回答 – 2012-03-29 16:39:11

+0

很抱歉,但我不不明白你想說什麼。它對你有用嗎? – nnichols 2012-03-29 16:40:04

4

解決方案IFNULL

SELECT  
p.`id`,p.`name`,p.`class_name`,cpd.`status_team`,cpd.`home`,cpd.`guest`,cpd.`mvp`, 
cpd.`oscar`,cpd.`wam`,cpd.`status`,cpd.`added_date` , 
IFNULL((SELECT result FROM result_cards WHERE `id` = cpd.`result`),0) AS `result` 
FROM `cron_players_data` cpd INNER JOIN `players` p ON cpd.`player_id` = p.id 
WHERE cpd.`added_date` = '2012-03-29' AND cpd.team_id = '15' 
+0

爲什麼你使用子查詢而不是左連接?它沒有任何意義。 – nnichols 2012-03-29 16:49:48

+0

我只是檢查這個邏輯的工作與否,我真的非常感謝您的支持 – 2012-03-29 16:51:12

+0

由您決定。我建議不要在這種情況下使用子查詢時,左連接將產生相同的結果,而且費用低得多。 – nnichols 2012-03-29 16:53:38