有一个表{id |日期}。我想选择日期>的所有行来自给定行的日期。
通常我会在两个查询中执行此操作:
SELECT `date` FROM `mytable` WHERE `id`={id}; //get {date} from known {id}
和
SELECT * FROM `mytable` WHERE `date`> {date} //get the desired result
是否可以在一个SQL查询中执行此操作?
谢谢!
答案 0 :(得分:1)
select * from mytable where date > (select date from mytable where id = {id})
答案 1 :(得分: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.
注意:
>
,所以可以省略t.id <> o.id
子句。在任何情况下,查询规划器都应该很好地解决这个问题。t.id = {id}
子句(假设id
具有唯一约束)将多重性降低到o
中每个输入行的最多一个输出行。