【问题标题】:Insert value in sqlite database to the first row in a specified column that is null将sqlite数据库中的值插入到指定列中为空的第一行
【发布时间】:2013-05-10 16:43:58
【问题描述】:

我正在尝试编写一个程序,该程序将自动将数据插入到 sqlite 中的给定表中。这是我的桌子的样子:

例如,我想在 col3 中输入一个新值data5,这是我使用的命令:

INSERT INTO exam_table (col3) VALUES ('data5')

这是表格之后的样子:

问题是,如果我想在另一列中插入一个新值,比如col1,我应该使用什么命令,以便将新值插入到col1 中为空的第一行(第 2 行) )?

注意:请提供除UPDATE exam_table SET col1='data6' WHERE col3='data4'ones 之外的任何 SQL 命令,因为假定我们不知道表的外观,所以我们不知道“col3”行2 包含“data4”

【问题讨论】:

  • 如果没有要排序的列,“第一行为空”是没有意义的。 SQL 表本身没有顺序的概念。
  • 所以你是说这是不可能的?
  • 您可以将 'data6' 放入 col1 为空的(伪)随机行中,但不执行where col3='data4'(或order by col3)而不是其中包含'data4'的特定行你不想做。
  • 好吧,不幸的是它必须在 col1 的第一行中为 null :( 真的没有答案吗?
  • 问题类似于“把停车场上的第一辆绿色汽车涂成黄色”,没有说从哪个方向走。您会从任一方向找到第一辆绿色汽车,但可能不是同一辆车。

标签: sqlite sql-insert


【解决方案1】:

关系数据库可能不适合您的应用程序,或者您可能需要明确地对行进行排序。

你问:

我应该使用什么命令,以便将新值插入到 'col1' 中为空的第一行

...但是 SQL 并没有真正的行排序概念,而不是查询强加的顺序。除非您将方案定义为 ORDER BY,否则没有带有 NULL col1 的“第一行”。

然后您要求我们不要提供 UPDATE 命令,“因为假设我们不知道表格的外观,所以我们不知道 'col3' 第 2 行包含 '数据4'"

但这就是 SQL 的工作方式:它将事物设想为无序的元组集(允许重复)。您不会“将值插入 NULL 字段”,而是插入整行或更新单个字段。

您必须强制执行排序,然后从那里开始工作 - 是的,它将是一个 UPDATE 命令或类似命令 - 或者放弃您的 SQL 后端并使用具有不同数据本体思想的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    相关资源
    最近更新 更多