2

S&P500我有一张指数中每只股票交易的历史股票价格表。

每个工作日,表中插入 500 条新记录historical_prices

交易品种,close_date,close_price。

由于多种原因,该过程经常失败,仅添加了一小部分记录。

星期四运行正确(500 条新记录),星期五失败(仅添加 400 条记录)。

我需要确定剩余的 100 条未添加的记录,以重新运行并完成该过程。

嵌套查询会是最有效的方法吗?选择星期四的 500 条记录,并对照星期五的 400 条记录进行衡量)

SELECT * FROM historical_prices 
WHERE `close_date` = '2016-01-16'

RIGHT JOIN (
   SELECT * FROM historical_prices 
   WHERE `close_date` = '2016-01-15')
WHERE `symbol` IS NULL;

先谢谢了!

4

2 回答 2

0

你可以这样做:

SELECT * FROM historical_prices 
WHERE `close_date` = '2016-01-16'
AND `symbol` NOT IN (
  SELECT `symbol` FROM historical_prices 
  WHERE `close_date` = '2016-01-15'
)
于 2016-01-18T02:11:31.400 回答
0

在这种情况下,子查询NOT IN将很容易理解。子查询NOT EXISTS会快一点。

SELECT * FROM historical_prices h1
WHERE h1.`close_date` = '2016-01-16'
AND NOT EXISTS (
  SELECT 1 FROM historical_prices h2
  WHERE h2.`close_date` = '2016-01-15' and h2.`symbol = h1.`symbol`
)
于 2016-01-18T02:58:34.257 回答