我非常感谢为此编写选择查询的所有帮助。
我的表格
sw_id | url_id | open_date | valid
----------------------------------------
101 | com | 2013-01-01 | 1
202 | net | 2013-01-02 | 1
202 | net | 2013-02-02 | 1
303 | com | 2013-01-03 | 1
303 | com | 2013-02-03 | 1
303 | com | 2013-03-03 | 1
404 | org | 2013-01-04 | 1
404 | org | 2013-02-04 | 1
404 | gov | 2013-02-04 | 1
404 | gov | 2013-04-04 | 1
...
We need to find the valid (valid=1) rows where same sw_id, url_id got less open_date.
select query should output the rows from above something like this:
查询输出
sw_id | url_id | open_date | valid | min_open_d
-----------------------------------------------------
202 | net | 2013-02-02 | 1 | 2013-01-02
303 | com | 2013-02-03 | 1 | 2013-01-03
303 | com | 2013-03-03 | 1 | 2013-01-03
404 | org | 2013-02-04 | 1 | 2013-01-04
404 | gov | 2013-04-04 | 1 | 2013-02-04
如您所见,我们仅选择 open_date 高于最低值 min(open_date) 的行。
希望您通过上面的描述了解问题所在。
最佳答案
如果您也在这里展示自己的努力,那就太好了,但基本上子查询是(最容易让新手理解的)方法之一。
SELECT
sw_id,
url_id,
open_date,
valid,
(
SELECT MIN(open_date)
FROM MyTable t2
WHERE t2.sw_id = t1.sw_id GROUP BY t2.sw_id
) AS min_open_d
FROM
MyTable t1
WHERE
valid = 1
ORDER BY
open_date DESC
关于sql - 如何根据两列和最小函数选择此行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14571223/