sql – 按照插入的确切顺序返回行
我有一个简单的连接表,在SQL Server中有两个id列.
有没有办法按照插入的确切顺序选择所有行? 如果我尝试创建SELECT *,即使我没有指定ORDER BY子句,也不会按插入顺序返回行,而是按第一个键列排序. 我知道这是一个奇怪的问题,但这个表非常大,我需要确切地检查一个奇怪的行为何时开始,不幸的是我的表中没有时间戳列. 更新#1 我将尝试解释为什么我说当没有ORDER BY子句的SELECT * FROM表时,行不会以’自然’顺序返回. 我的桌子是这样的: id1 id2 --------------- 1 1 2 2 3 3 4 4 5 5 5 6 ... and so on,with about 90.000+ rows 现在,我不知道为什么(可能是一个软件错误插入这些行),但我的表有450万行,看起来像这样: id1 id2 --------------- 1 1 1 35986 1 44775 1 60816 1 62998 1 67514 1 67517 1 67701 1 67837 ... 1 75657 (100+ "strange" rows) 2 2 2 35986 2 44775 2 60816 2 62998 2 67514 2 67517 2 67701 2 67837 ... 2 75657 (100+ "strange" rows) 疯狂,我的桌子现在有数百万行.我必须看一下当发生这种情况时(当插入的行时),因为我必须删除它们,但我不能只使用* WHERE id2 IN(strange_ids)*删除因为有“right”id1列属于这些id2列,我无法删除它们,因此我试图查看何时插入这些行以删除它们. 当我SELECT * FROM表时,它返回我按id1排序,如上表所示,和 解决方法正如其他人已经写过的那样,您将无法按照插入顺序从链接表中获取行.如果此链接表正在连接的一个或两个表中存在某种行的内部排序,则可以使用它来尝试确定何时创建链接表行.基本上,在创建包含PK:s的两行之前,不能创建它们. 但另一方面,你将无法找到它们创建后多久. 如果你有不错的备份,你可以尝试恢复一个或几个不同年龄的备份,然后尝试查看这些备份是否也包含这种奇怪的行为.它可以给你至少一些关于陌生感何时开始的线索. 但最重要的是,只使用一个选择,现在有办法按照插入顺序从这样的表中取出行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |