如何在表格中间的某处添加一行

时间:2009-08-12 07:40:39

标签: sqlite

我有一个要求,我必须在表格中间的某处添加一行,如果它不存在。

你能帮我解决这个问题吗?

4 个答案:

答案 0 :(得分:7)

您提出此问题的事实让我担心您当前的代码只是偶然发生。如果您希望行以特定顺序出现,那么您需要在SQL上使用“ORDER BY”,否则您将以未定义的顺序获取行。

行可能会按照某种顺序排列,例如你插入它们的顺序,因为它是如何实现的,但是如果你插入或删除更多的行或者没有明显的原因,它可能随时改变。

如果订单对您很重要,那么您需要使用订单。然后它最有可能“正常工作”。但对我来说,无论如何你需要添加

答案 1 :(得分:4)

您无法将行添加到任意位置。表中的行集按定义无序,因此首先没有“位置”。您只能使用SELECT查询的某些排序规则来按所需顺序检索结果。

答案 2 :(得分:1)

尽管技术上不可能在任意位置插入行,但它也违反了规范化的“规律”。

如果需要在记录集中订购数据,则必须通过ORDER BY语句对其进行排序。这必须在您的表包含的数据上完成。如果您想根据用户输入订购行,例如

  1. 第一行,[上移] / [下移]
  2. 第二行,[上移] / [下移]
  3. 第三排,[上移] / [下移]
  4. 您应该添加一个列'user_sorting',并确保user_sorting值对于子集而言是唯一的。

答案 3 :(得分:0)

如前所述,你不能在技术上在表格的中间添加东西,并且可能只是运气如何在输出中排序(如果你没有使用ORDER BY子句)。

为了一个参数,我们假设你的表中有row_id,只是通过一个简单的SELECT语句,你的行恰好按升序row_id顺序排列。如果要在中间添加一行,则必须增加要在新行“下方”的所有行的row_id,并添加适合的row_id的新行差距。然后,您还需要更新输出这些行的SELECT语句,以便按row_idORDER BY row_id)进行排序,否则这将不起作用。