我现在有这个代码来过滤掉另一个表中的数据:
SELECT sym,
tstamp,
COUNT(*) AS trades
FROM datas
GROUP BY sym,
tstamp
HAVING COUNT(tstamp) > 300)
INSERT INTO tradecounts
哪种方法很好,但我认为只添加不在其中的新数据会更有效?我正试图使用这个代码来做到这一点,但没有运气:
IF NOT EXISTS(SELECT sym,
tstamp,
COUNT(*) AS trades
FROM datas
GROUP BY sym,
tstamp
HAVING COUNT(tstamp) > 300)
INSERT INTO tradecounts
我相信这是相当简单的,但我是SQL语言的新手(今天刚开始(。任何建议都将不胜感激,如果你有任何学习查询语言的好资源,我很乐意看到。谢谢
也许是这样的:
WITH x AS(
SELECT sym,
tstamp,
COUNT(*) AS trades
FROM datas
GROUP BY sym,
tstamp
HAVING COUNT(tstamp) > 300)
)
INSERT INTO tradecounts
SELECT x.*
FROM
x LEFT JOIN tradecounts t ON x.sym = t.sym AND x.tstamp = t.tstamp
WHERE
t.sym IS NULL
尽管你所说的";已经存在";将定义如何构造ON子句——我猜它是";sym和tstamp对不存在于目的表";