Mysql SQLite:如何向多个列插入相同的值?
我想为表中的所有列提供相同的时间戳值。假设这些列是未知的。 有什么办法可以这样做吗Mysql SQLite:如何向多个列插入相同的值?,mysql,sql,sqlite,Mysql,Sql,Sqlite,我想为表中的所有列提供相同的时间戳值。假设这些列是未知的。 有什么办法可以这样做吗 插入表值(“一个值”) 不指定列名 更新: 假设我有一个名为“student”的表,其中有“f_name”、“m_name”和“l_name” 假设我在学生价值观中插入了('John') 然后我希望我的桌子看起来像这样 -----------student------------ f_name | m_name | l_name ------------------------------ Joh
插入表值(“一个值”)代码>
不指定列名
更新:
假设我有一个名为“student”的表,其中有“f_name”、“m_name”和“l_name”
假设我在学生价值观中插入了('John')代码>
然后我希望我的桌子看起来像这样
-----------student------------
f_name | m_name | l_name
------------------------------
John | John | John <--- (The record i just inserted)
-------------学生------------
f|u name | m|u name | l|u name
------------------------------
Sqlite和Mysql不支持在单个查询上插入多表
Sqlite
MySql
但是,还有一些其他数据库支持此类功能,如Oracle。据我所知。Sqlite和Mysql不支持在单个查询上插入多个表
Sqlite
MySql
但是,还有一些其他数据库支持此类功能,如Oracle。据我所知。如果你知道列数,那么你可以使用
INSERT INTO table VALUES ('Cardinal',..........,'Cardinal'); //As many times as number of columns
如果您知道列数,则可以使用
INSERT INTO table VALUES ('Cardinal',..........,'Cardinal'); //As many times as number of columns
您可以使用更新:
UPDATE TableName SET ColumnName = 'Value';
只有当您的表中已有数据时,此操作才有效。您可以使用更新
来完成此操作:
UPDATE TableName SET ColumnName = 'Value';
只有当您的表中已经有数据时,这才有效。这实际上可以在postgres中完成。我不认为你能在sqlite中做到这一点。通过以下查询,您可以生成所需的insert语句,而无需知道表的列。用数据库中的表名替换MY_表
SELECT 'INSERT INTO MY_TABLE ' || array_to_string(ARRAY(SELECT '' || c.column_name
FROM information_schema.columns As c
WHERE table_name = 'MY_TABLE'
), ',') || ' VALUES (' ||
array_to_string(ARRAY(SELECT '' || '\'MY_VALUE\''
FROM information_schema.columns As c
WHERE table_name = 'MY_TABLE'
), ',') || ');'
As sqlstmt
实际上,这可以在博士后中完成。我不认为你能在sqlite中做到这一点。通过以下查询,您可以生成所需的insert语句,而无需知道表的列。用数据库中的表名替换MY_表
SELECT 'INSERT INTO MY_TABLE ' || array_to_string(ARRAY(SELECT '' || c.column_name
FROM information_schema.columns As c
WHERE table_name = 'MY_TABLE'
), ',') || ' VALUES (' ||
array_to_string(ARRAY(SELECT '' || '\'MY_VALUE\''
FROM information_schema.columns As c
WHERE table_name = 'MY_TABLE'
), ',') || ');'
As sqlstmt
可以对所有记录执行更新
。您可以简单地忽略任何中的限制。但是对于INSERT
来说,这没有意义,因为RDBMS怎么知道停止(或开始)插入所需数量的记录呢?这与行无关。反正是一张唱片。我不知道如何进一步解释这一点。很抱歉我的要求其实很简单。所有列只有一个值。您知道列数吗?或者这也是未知的?@TimBiegeleisen请检查更新。这是我所能解释的。回答你的问题,是的。列数也是未知的。我能看到的唯一方法是首先从表中查询列。但强制您列出列是一种很好的做法。例如,如果一列的类型为TINYINT
,会发生什么情况?您的插入可能会导致错误。一般来说,您不应该在整个记录中盲目插入数据。可以对所有记录执行更新。您可以简单地忽略任何中的限制。但是对于INSERT
来说,这没有意义,因为RDBMS怎么知道停止(或开始)插入所需数量的记录呢?这与行无关。反正是一张唱片。我不知道如何进一步解释这一点。很抱歉我的要求其实很简单。所有列只有一个值。您知道列数吗?或者这也是未知的?@TimBiegeleisen请检查更新。这是我所能解释的。回答你的问题,是的。列数也是未知的。我能看到的唯一方法是首先从表中查询列。但强制您列出列是一种很好的做法。例如,如果一列的类型为TINYINT
,会发生什么情况?您的插入可能会导致错误。一般来说,您不应该在整个记录中盲目插入数据。我认为这行不通。此处需要列名。@TimBiegeleisen根据w3school.com,第一种形式没有指定插入数据的列名,只指定它们的值:INSERT-INTO-table\u-name-values(value1、value2、value3,…)代码>看一看。您看到的页面很可能是通用SQL,而不是MySQL方言。我认为这不起作用。此处需要列名。@TimBiegeleisen根据w3school.com,第一种形式没有指定插入数据的列名,只指定它们的值:INSERT-INTO-table\u-name-values(value1、value2、value3,…)代码>看一看。您看到的页面很可能是通用SQL,而不是MySQL方言.Yep。我需要的是一张新唱片。我需要的是一个新记录。这正是我需要的,但在SQLite中。无论如何,谢谢。这正是我需要的,但在SQLite中。无论如何,谢谢你。