2016-04-06 52 views
1

當前SQL代碼列是:SQL:子查詢?拉使用情況

SELECT k.id, k.symbol, y.close, y.volume, 
((y.close/y.close_adj_previous_day)-1) AS percent_change 
     FROM symbols k 
     JOIN stocks y ON k.id = y.id 
    WHERE 
     k.t_removed = 0 
     AND t = '$max_t' 
    ORDER BY percent_change DESC 
    LIMIT 10 

試圖讓close_adj_previous_day。目前我使用另一個查詢來獲取close_adj_previous一天這樣的:

 SELECT k.close_adj AS close_adj_previous_day 
     FROM stocks k 
     WHERE 
      k.id = '$id' 
      AND k.t = '$max_t_minus_one' 
     LIMIT 1 

我將如何組合這些查詢,得到的結果進行排序的頂級查詢?謝謝你們/加爾斯。從表

半例如:

Example Table Kind Of

+0

樣本數據和所需的結果將有助於您的查詢。 –

+0

我添加了一個圖像作爲半示例表。 – Aoi

回答

1

如果你有變量,使用join: 你有一個變量的前一天值。你可以使用一個join

SELECT k.id, k.symbol, y.close, y.volume, 
    ((y.close/yprev.close)-1) AS percent_change, 
    yprev.close_adj AS close_adj_previous_day 
FROM symbols k JOIN 
    stocks y 
    ON k.id = y.id AND y.t = '$max_t' JOIN 
    stocks yprev 
    ON k.id = yprev.id and yprev.t = '$max_t_minus_one' 
WHERE k.t_removed = 0 
ORDER BY percent_change DESC 
LIMIT 10