2014-03-24 40 views
-1

我知道我不能在MySQL的一個視圖的from子句中做一個子查詢。 (錯誤1349)MySQL:有沒有用於這個簡單的視圖子查詢的任何MySQL解決方法? (已解決)

有沒有這個簡單的語句的任何解決方法。

CREATE VIEW view as 
    SELECT * FROM 
    (
     SELECT Credits.ID,Credits,Bonus 
     FROM Credits,Bonus 
     WHERE Credits.ID = Bonus.ID 
     ORDER BY Credits.Date DESC, Bonus.Date DESC 
    ) as tmp 
    GROUP BY ID 

這是我想要得到 ID Credits Bonus 1 1300 2 2 23 40 3 3045 134

編輯:我解決了這個有相關的SQL查詢。

+0

你試圖實現什麼?你可以請張貼一些樣本數據和一些預期的產出? – Rachcha

+0

只是一個想法,但可能不是最好的方式來做到這一點。您可以使用現有視圖創建視圖。換句話說,從您的子查詢中創建一個視圖,然後在您的FROM子句中使用該視圖創建一個視圖。這可能會降低你的表現。 – amaster

+0

我用相關的sql查詢解決了這個問題。 – unotki

回答

1

是的。首先,正確編寫查詢。你的查詢取決於order by實際上在子查詢中工作,儘管MySQL不能保證這一點。

我在猜測你想要credits以及最近的bonus記錄。沒有樣本數據,期望的結果和數據佈局,可能很難解釋查詢。

相反,你應該使用not exists

CREATE VIEW view as 
    select c.ID, c.Credits, b.Bonus 
    from credits c join 
     bonus b 
     on c.id = b.id 
    where not exists (select 1 
         from bonus b2 
         where b2.id = b.id and b2.date > b.date 
        ); 

子查詢被允許在where(和select條款)。