SQL坚持使用这个

SQL坚持使用这个,sql,db2,Sql,Db2,我需要从只有一行具有该ID的表中选择行 示例表,包含两列。 第一个ID和时间戳。 所以第一行是ID 1,时间戳是01/01/2013 ID Timestamp 1 01/01/2013 2 02/02/2013 3 04/02/2013 3 07/02/2013 4 20/03/2013 因此,对于这个表,我只想返回ID为1,2,4的记录,因为它们都只有一行 然后,如果这些行的时间戳超过一个月,我只需要返回它们。时间戳的格式

我需要从只有一行具有该ID的表中选择行

示例表,包含两列。 第一个ID和时间戳。 所以第一行是ID 1,时间戳是01/01/2013

ID      Timestamp
1       01/01/2013
2       02/02/2013
3       04/02/2013
3       07/02/2013
4       20/03/2013
因此,对于这个表,我只想返回ID为1,2,4的记录,因为它们都只有一行

然后,如果这些行的时间戳超过一个月,我只需要返回它们。时间戳的格式为2012-11-12-22.00.15.541231


有人能帮忙吗?

这应该适合您:

SELECT *
FROM mytable
WHERE id NOT IN (
    SELECT id
    FROM mytable
    GROUP BY id
    HAVING COUNT(*) > 1
) AND time_created < current_timestamp - 1 month
您可以为此输出使用group by子句-

编辑

增加邮戳栏

SELECT *
  FROM Your_Table_Name
 WHERE Id IN
       (SELECT Id FROM Your_Table_Name GROUP BY Id HAVING COUNT(*) = 1)
 AND time_created < current_timestamp - 1 month

这样的办法应该行得通

select id
from yourtable
where timestampfield <= current timestamp - 1 month
group by id
having count(*) = 1
负1个月的部分来自

MySQL 5.5.30架构设置:

问题1:

:


如果只需要返回ID和时间戳,可以避免使用子查询,如下所示:

SELECT ID, MAX(Timestamp) AS Timestamp
FROM atable
GROUP BY ID
HAVING COUNT(*) = 1
   AND MAX(Timestamp) < CURRENT TIMESTAMP - 1 MONTH
;

您正在使用哪个数据库?isqlquery标记建议SQL Server时间戳列是什么类型?只是查询DB2表,而不是SQL Server错误标记抱歉!按count1=1的ID从表_name group中选择ID;它位于SQL Server中。但是你可以参考逻辑。@Luv我想你不在子句中。使用not in时,您必须对所需的输出使用count*>1。不,不使用时大于1。当usedOP还需要另一个条件时,它将是=1。时间戳约束在这个问题的第一次修订中不存在。补充。时间检查应该是它应该首先检查计数,而这个问题后的日期条件与此无关MySQL@mvp:只是想展示一下方法。我想这对于所有的数据库都很常见,当我研究这个问题时,没有与数据库相关的标记,所以我考虑了mysql。
select ID,Timestamp
from Table1
where DATEDIFF(curdate(),DATE_SUB(Timestamp,INTERVAL 1 MONTH))>=1
group by ID
having count(ID)=1
| ID |                       TIMESTAMP |
----------------------------------------
|  1 |  January, 01 2013 00:00:00+0000 |
|  2 | February, 02 2013 00:00:00+0000 |
|  4 |    March, 20 2013 00:00:00+0000 |
SELECT ID, MAX(Timestamp) AS Timestamp
FROM atable
GROUP BY ID
HAVING COUNT(*) = 1
   AND MAX(Timestamp) < CURRENT TIMESTAMP - 1 MONTH
;