SQL:查询新日期的新行

时间:2014-08-10 10:01:13

标签: sql

我有这张照片所示的表格 - > http://www.directupload.net/file/d/3710/lj7etq5j_png.htm

我需要正确的Query才能获得data_id 10.

查询应如下所示:将最新日期行(2014-08-08)与最早的日期行(2014-08-06)进行比较。如果2014-08-08有一行不在2014-08-06,则该行应返回。

我已经尝试过使用自连接和子选择,但我确实没有使用它。

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

也许这就是你要找的东西?

select * from Table1
where 
    data not in (
        select data from Table1 
        where dataOfDate = (select min(dataofdate) from Table1)
        )
    and dataOfDate = (select max(dataofdate) from Table1)

第一个where子句将返回行的数据字段与最旧行集中的数据字段进行比较,第二个where子句将行集限制为最新行。

请注意,我只是根据data字段比较行,因此如果您想在比较中包含nextTableId,则可能需要更改查询。

Here is a sample SQL Fiddle.

答案 1 :(得分:0)

这样的事情怎么样:

SELECT d1.* FROM Dates d1 LEFT JOIN Dates d2 ON d1.nextTableId = d2.nextTableId WHERE d1.dataofDate = '2014-08-08' AND d2.dataofDate = '2014-08-06' AND d2.data_id IS NULL;

答案 2 :(得分:0)

SELECT `data_id`
FROM `my_table`
WHERE `dataOfDate` = (SELECT MAX(`dataOfDate`) FROM `my_table`)
AND `nextTableId` NOT IN (
    SELECT `nextTableId` FROM `my_table` WHERE `dataOfDate` = (SELECT MIN(`dataOfDate`) FROM `my_table`) 
)
  1. 选择所有具有最大日期的行
  2. 在具有最短日期的行中没有值
  3. 编辑操作,太晚了