我做這樣的事情給多個where子句的生啤酒
SELECT
start.time AS startTime,
finish.time AS finishTime
FROM Train
WHERE _id = 3 AS start,
WHERE _id = 5 AS finish;
的事情是有在SQL任何等同於這一點,或者我要創建兩個不同的SELECT語句。
我做這樣的事情給多個where子句的生啤酒
SELECT
start.time AS startTime,
finish.time AS finishTime
FROM Train
WHERE _id = 3 AS start,
WHERE _id = 5 AS finish;
的事情是有在SQL任何等同於這一點,或者我要創建兩個不同的SELECT語句。
假設_id
是你的主鍵,你可以做一個嵌套SELECT
:
SELECT
(SELECT start.time FROM Train Where _id=3) AS start
, (SELECT finish.time FROM Train Where _id=5) AS finish
@GordonLinoff你是對的,那裏沒有括號!感謝編輯! – dasblinkenlight
這不是我真正的SQL查詢 我真正的查詢在WHERE子句中有10行 所以我試圖避免使用WHERE兩次 – humazed
@humazed。 。 。只能回答你提出的問題。 –
另一種使用條件彙總:
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);
這非常可愛,尤其是'min'和'max'可以處理多個'3'和'5',而不會假設'_id'是一個PK。 – dasblinkenlight
SELECT
LAG(time, 2, 0) OVER() AS startTime
time AS finishTime,
FROM Train
WHERE _id = 5
ORDER BY _id;
如果你能calulate開始和結束時間之間的偏移量,可以使用LAG函數訪問前一行的值。如果你不能,請提供完整的查詢,或使用@Gordon Linoff解決方案。
提供樣品數據和所需結果。 – Serg