我有一组数据,其中包含两组标识符:该记录的唯一编号,Widget_Number
以及记录的原始唯一编号, Original_Widget_Number
。通常这两个值是相同的,但是当记录被修改时,将创建一个新记录,新记录为Widget_Number
,保留Original_Widget_Number
中旧的Widget_Number
值。 IE SELECT * FROM widgets WHERE Widget_Number != Original_Widget_Number
返回所有已更改的记录。 (Widget_Number
对于新小工具增加10,对于修订小工具增加1)根据同一表中其他行中的值拉取某些行的SQL查询
我想返回所有已更改的记录以及与这些记录相关的原始记录。例如,如果我有包含表:
Widget_Number Original_Widget Number More_Data
1: 10 10 Stephen
2: 11 10 Steven
3: 20 20 Joe
我想查询返回行1 & 2.我知道我可以在一个更高层次的语言环槽这但有一个简单的方法来做到这一点在MS SQL中?使用exists()
谢谢!这两种方法都有效,但都提供了一些未改变记录的重复,例如:https://pastebin.com/CmpsM4Hm。让我比较记录和原件是可行的。任何想法如何防止重复,但? – Michael
@Michael它取决于你想返回哪些行。你可以用'group by'来聚合,就像'select rowid = min(rowid),widget_number,original_widget_number from .... group by widget_number,original_widget_number' – SqlZim