我有一个开放式的api feed,每小时为我的数据库提供数据。开放日数据库包含:MLS#,上市代理,上市办公室,地址,开放日期,下一个开放日期。
我想创建一个新表,保存开放日期和下一个开放日期的所有记录。我可以有重复的MLS#,但需要有不同的开放日期。
开放表:当前周
--------------------------------------
MLS | Open Date | Next Open Date
12433 | 6/24/15 | 6/25/15
23223 | 6/22/15 | 6/23/15
35325 | 6/23/15 | 7/01/15
--------------------------------------
开放表:上周
--------------------------------------
MLS | Open Date | Next Open Date
12433 | 6/15/15 | n/a
23223 | 6/18/15 | 6/20/15
35325 | 6/07/15 | n/a
--------------------------------------
所有开放日历史表:
--------------------------------------
MLS | Open Date | Next Open Date
12433 | 6/24/15 | 6/25/15
23223 | 6/22/15 | 6/23/15
35325 | 6/23/15 | 7/01/15
12433 | 6/15/15 | n/a
23223 | 6/18/15 | 6/20/15
35325 | 6/07/15 | n/a
--------------------------------------
历史记录表可以包含相同的号码,但不能具有相同的开放日期和下一个开放日期。
我试过了:
INSERT INTO open_house_history (mls_id, open_date, next_open_date)
SELECT mls_id, open_date, next_open_date
FROM open_house
WHERE open_date NOT IN (SELECT open_date FROM open_house_history)
AND mls_id IN (SELECT mls_id FROM open_house_history)
请帮忙! 三江源
答案 0 :(得分:0)
您的查询存在问题,因为您要排除表格中已有开放日期的所有记录。
WHERE open_date NOT IN (SELECT open_date FROM open_house_history)
如果您要获得具有相同日期的其他商家信息,则会将其排除在外。具有相同ID但日期不同的列表也将被排除。
在这样的例子中,我将所有字段组合成一个字符串并将其用于比较:
INSERT INTO open_house_history (mls_id, open_date, next_open_date)
SELECT mls_id, open_date, next_open_date
FROM open_house
WHERE CONVERT(VARCHAR(8), open_date, 112) + '|' + mls_id NOT IN (SELECT CONVERT(VARCHAR(8), open_date, 112) + '|' + mls_id FROM open_house_history)