我有一个要求,我必须在表格中间的某处添加一行,如果它不存在。
你能帮我解决这个问题吗?
答案 0 :(得分:7)
您提出此问题的事实让我担心您当前的代码只是偶然发生。如果您希望行以特定顺序出现,那么您需要在SQL上使用“ORDER BY”,否则您将以未定义的顺序获取行。
行可能会按照某种顺序排列,例如你插入它们的顺序,因为它是如何实现的,但是如果你插入或删除更多的行或者没有明显的原因,它可能随时改变。
如果订单对您很重要,那么您需要使用订单。然后它最有可能“正常工作”。但对我来说,无论如何你需要添加
答案 1 :(得分:4)
您无法将行添加到任意位置。表中的行集按定义无序,因此首先没有“位置”。您只能使用SELECT查询的某些排序规则来按所需顺序检索结果。
答案 2 :(得分:1)
尽管技术上不可能在任意位置插入行,但它也违反了规范化的“规律”。
如果需要在记录集中订购数据,则必须通过ORDER BY语句对其进行排序。这必须在您的表包含的数据上完成。如果您想根据用户输入订购行,例如
您应该添加一个列'user_sorting',并确保user_sorting值对于子集而言是唯一的。
答案 3 :(得分:0)
如前所述,你不能在技术上在表格的中间添加东西,并且可能只是运气如何在输出中排序(如果你没有使用ORDER BY子句)。
为了一个参数,我们假设你的表中有row_id
,只是通过一个简单的SELECT语句,你的行恰好按升序row_id
顺序排列。如果要在中间添加一行,则必须增加要在新行“下方”的所有行的row_id
,并添加适合的row_id
的新行差距。然后,您还需要更新输出这些行的SELECT语句,以便按row_id
(ORDER BY row_id
)进行排序,否则这将不起作用。