2016-09-25 86 views
0

我做這樣的事情給多個where子句的生啤酒

SELECT 
    start.time AS startTime, 
    finish.time AS finishTime 
FROM Train 
WHERE _id = 3 AS start, 
WHERE _id = 5 AS finish; 

的事情是有在SQL任何等同於這一點,或者我要創建兩個不同的SELECT語句。

+2

提供樣品數據和所需結果。 – Serg

回答

2

假設_id是你的主鍵,你可以做一個嵌套SELECT

SELECT 
    (SELECT start.time FROM Train Where _id=3) AS start 
, (SELECT finish.time FROM Train Where _id=5) AS finish 
+0

@GordonLinoff你是對的,那裏沒有括號!感謝編輯! – dasblinkenlight

+0

這不是我真正的SQL查詢 我真正的查詢在WHERE子句中有10行 所以我試圖避免使用WHERE兩次 – humazed

+0

@humazed。 。 。只能回答你提出的問題。 –

1

另一種使用條件彙總:

select min(case when _id = 3 then time end) as start_time, 
     max(case when _id = 5 then time end) as end_time 
from t 
where _id in (3, 5); 
+0

這非常可愛,尤其是'min'和'max'可以處理多個'3'和'5',而不會假設'_id'是一個PK。 – dasblinkenlight

0
SELECT 
LAG(time, 2, 0) OVER() AS startTime 
time AS finishTime, 
FROM Train 
WHERE _id = 5 
ORDER BY _id; 

如果你能calulate開始和結束時間之間的偏移量,可以使用LAG函數訪問前一行的值。如果你不能,請提供完整的查詢,或使用@Gordon Linoff解決方案。