有一个表{id | 日期}。我想从给定行中选择日期>日期的所有行。
通常我会在两个查询中做到这一点:
SELECT `date` FROM `mytable` WHERE `id`={id}; //get {date} from known {id}
和
SELECT * FROM `mytable` WHERE `date`> {date} //get the desired result
是否可以在一个 SQL 查询中完成?
谢谢!
select * from mytable where date > (select date from mytable where id = {id})
这是自加入的好候选。
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
.