如何仅选择特定日期的,以前未输入的新添加记录行?
我的源数据是:
SELECT DISTINCT
Date, IP
FROM
tblIPs
WHERE
(Date = '2019-03-25')
这将返回:
但是10.0.0.1以前确实存在于数据库中,所以我不希望它出现在我的结果中。
有什么方法可以选择唯一的IP地址(无论日期如何),然后按日期(2019-03-25)进行过滤?
答案 0 :(得分:7)
您可以使用group by
和having
:
SELECT MIN(Date), IP
FROM tblIPs
GROUP BY IP
HAVING MIN(Date) = '2019-03-25'
答案 1 :(得分:3)
请尝试这个。
SELECT
DISTINCT A.Date, A.IP
FROM
tblIPs A
INNER JOIN tblIPs B
ON A.IP <> B.IP
AND A.DATE <> B.DATE
WHERE
(A.Date = '2019-03-25')
答案 2 :(得分:3)
因此,您希望出现在2019-03-25的IP,而不要出现在此之前:
SELECT IP FROM tblIPs WHERE DATE = '2019-03-25'
EXCEPT
SELECT IP FROM tblIPs WHERE DATE < '2019-03-25'
;
如果您还想排除在2019-03-25之后再次出现的IP,请将<
更改为<>
答案 3 :(得分:1)
SELECT * FROM (SELECT Date, IP, row_number() over (partition by IP order by date desc)as recno
FROM tblIPs ) TT
WHERE (Date = '2019-03-25') and recno = 1
答案 4 :(得分:1)
这将适合您的情况
SELECT T.DATE, T.IP
FROM tblIPs as T
INNER JOIN (
SELECT count(id) as count, IP FROM tblIPs
GROUP BY ip
HAVING COUNT(id) = 1
) AS A
ON (T.IP = A.IP)
WHERE DATE = '2019-03-25'
答案 5 :(得分:1)
这是你在找什么吗?
SELECT ips.*
FROM tblIPs ips
WHERE EXISTS (SELECT 1 FROM tblIPs ips1 WHERE ips1.IP = ips.IP AND ips.Date <> ips.Date);