2013-10-30 76 views
0

有一個表{id |日期}。我想從給定的行中選擇日期>日期的所有行。對WHERE子句使用select結果

通常我會做它在兩個查詢:

SELECT `date` FROM `mytable` WHERE `id`={id}; //get {date} from known {id} 

SELECT * FROM `mytable` WHERE `date`> {date} //get the desired result 

是否有可能做一個SQL查詢?

謝謝!

+0

'是否可以在一個SQL查詢中完成它?'你試過了嗎? –

回答

1
select * from mytable where date > (select date from mytable where id = {id}) 
0

這是一個很好的候選人self-join

SELECT o.* 
FROM mytable t   -- For every row from This table, 
CROSS JOIN mytable o -- and for every row in the Other (see note #2) table 
WHERE t.id <> o.id  -- such that it is a different row 
    AND o.date > t.date -- with a date later 
    AND t.id = {id}  -- than a specific row. 

注:

  1. 由於>在值比較中使用,可以省略t.id <> o.id子句。在任何情況下,查詢計劃人員都應該把這些東西弄清楚。
  2. CROSS JOIN從笛卡爾產品開始,但WHERE過濾器迅速將其降回。特別是t.id = {id}子句(假設id有一個唯一約束)將o中每個輸入行的多重性降至最多一個輸出行。
相關問題