我有一个 PostgreSQL 数据库,想要根据我拥有的记录 ID 为多条记录插入相同的值。有没有办法在语句中
设置条件?例如:WHEREINSERT
insert into Customers (new-customer) values ('t') where customer_id in (list)
Run Code Online (Sandbox Code Playgroud) 我想使用 CTE 从另一个表插入一个表。我之前尝试过加分号with,但不起作用。
这是我的查询:
INSERT INTO [autoFIE2].[dbo].[tbl_article_type_parent_child] ([art_typ_parent_index], [art_typ_child_index])
WITH article_type_list AS
(
SELECT
art_typ_child_index, art_typ_parent_index
FROM
[autoFIE2].[dbo].[tbl_article_type_parent_child]
WHERE
art_typ_parent_index IS NULL
UNION ALL
SELECT
a.art_typ_child_index, a.art_typ_parent_index
FROM
[autoFIE2].[dbo].[tbl_article_type_parent_child] A
INNER JOIN
article_type_list as AL ON a.art_typ_parent_index = al.art_typ_child_index
WHERE
a.art_typ_parent_index IS NOT NULL)
SELECT *
FROM article_type_list;
Run Code Online (Sandbox Code Playgroud)
执行此语句时出错:-
消息 156,级别 15,状态 1,第 4
行关键字“with”附近的语法不正确。消息 319,级别 15,状态 1,第 4 行
关键字“with”附近的语法不正确。如果此语句是公用表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前一个语句必须以分号终止。
我应该怎么做才能将这些分层数据插入到另一个表中。有什么建议吗?
我想使用以下方法取回插入 MySql 数据库的最后一篇文章的 id sqlx:
resultPost, err := shared.Dbmap.Exec("INSERT INTO post (user_id, description, link) VALUES (?, ?, ?)", userID, title, destPath)
if err != nil {
log.Println(err)
c.JSON(
http.StatusInternalServerError,
gin.H{"error": "internal server error"})
}
fmt.Println("resultPost is:", resultPost)
Run Code Online (Sandbox Code Playgroud)
问题是 被resultPost打印为对象:
resultPost is: {0xc420242000 0xc4202403a0}
Run Code Online (Sandbox Code Playgroud)
所以我想知道提取刚刚插入的行的 id 的正确方法是什么?
今天这有点令人沮丧。我确信我忽略了一些简单的事情。请参阅下面的代码(为了示例而简化):
def dbUpsert(sqlQuery, sqlValues):
# Connect to the database
connection = pymysql.connect(host='localhost',
user='db_user',
password='###',
db='garden',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
try:
with connection.cursor() as cursor:
# Create a new record
cursor.execute(sqlQuery, sqlValues)
# Commit the changes
connection.commit()
finally:
connection.close()
sqlValues = real_plants, datetime.datetime.today().strftime('%Y-%m-%d'), 10
print (sqlValues)
##### Output: ('roses', '2020-02-19', 10)
sqlQuery = """
INSERT INTO summ_plants_day
(
real_plants, d_date, acc_plants
)
VALUES (%s, %s, %s)
ON DUPLICATE KEY UPDATE
real_plants = %s,
d_date = %s,
acc_plants = %s
"""
dbUpsert(sqlQuery, sqlValues)
Run Code Online (Sandbox Code Playgroud)
在我的数据库中,我有 …
我已使用 SQL 数据库创建了一个 Azure SQL Server,并在该数据库中创建了一个名为 table1 的表,其中包含 ID、FirstName、LastName 和 DOB 列。但是,当我尝试使用这个语句时:
INSERT INTO table1(ID, FirstName, LastName, DOB)
VALUES (1, "Rohit", "Karthik", "8/2/06")
Run Code Online (Sandbox Code Playgroud)
它输出一个错误:
Failed to execute query. Error: Invalid column name 'Rohit'.
Invalid column name 'Karthik'.
Invalid column name '8/2/06'.
Run Code Online (Sandbox Code Playgroud)
(顺便说一句:ID是int类型,其他都是varchar类型)
SQL Server 中的上述 SQL 查询不应该在该表中插入新行吗?
我不确定为什么会出现这个错误,请帮忙。
说我有下表的东西。我想要表中的唯一名称,所以没有重复。插入事物的过程不需要检查具有此名称的事物是否已经存在。
CREATE TABLE things(
id SMALLSERIAL PRIMARY KEY,
name varchar UNIQUE
);
Run Code Online (Sandbox Code Playgroud)
当我插入这样的值时,它会起作用。如果 'desk' 已经在东西里,它就不会被插入。
INSERT INTO things (name)
VALUES ('desk')
ON CONFLICT DO NOTHING;
Run Code Online (Sandbox Code Playgroud)
唯一的问题是 ON CONFLICT DO NOTHING 并不是真的什么都不做。它仍然增加 id 字段的序列。
如果这种情况发生得太频繁,那么 id 序列最终会变得对于字段类型来说太大。
有没有办法防止这种情况发生?
我找不到将查询结果附加到 BigQuery 中已存在且按小时分区的表的方法。我只找到了这个解决方案: https: //cloud.google.com/bigquery/docs/writing-results#writing_query_results。
job_config = bigquery.QueryJobConfig(destination=table_id)
sql = """SELECT * FROM table1 JOIN table2 ON table1.art_n=table2.artn"""
# Start the query, passing in the extra configuration.
query_job = client.query(sql, job_config=job_config) # Make an API request.
query_job.result() # Wait for the job to complete.
Run Code Online (Sandbox Code Playgroud)
但是提供一个目标表来bigquery.QueryJobConfig覆盖它,我没有发现有bigquery.QueryJobConfig一个选项可以指定if_exists或其他东西。据我了解,我需要应用于job.insert查询结果,但我不明白如何。
我也没有找到任何好的建议,也许有人可以指点我?
以防万一,我的实际查询很大,我从一个单独的 JSON 文件加载它。
然后我从MySQL转到PostgreSQL ,我在PostgreSQL中创建了带有BOOLEAN列的test表,如下所示:state
CREATE TABLE test (
state BOOLEAN -- Here
);
Run Code Online (Sandbox Code Playgroud)
但是,即使下面的 SQL 查询在MySQL中工作,我也无法插入TRUEwith1和FALSEwith0到test表,如下所示:
INSERT INTO test VALUES (1);
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES (0);
Run Code Online (Sandbox Code Playgroud)
然后,我收到以下错误:
ERROR: column "state" is of type boolean but expression is of type integer
Run Code Online (Sandbox Code Playgroud)
那么,如何向表中插入布尔值呢?
我的表中有两列名为Workers - Technicians.在工人我有工人的名字,在技术员,我有在公司工作的技术人员的名字.以下是它的外观:
工人 技师
Andy Kevin
Conan Jason
Jay Ray
Donald Daryl
Martin .
Mark .(rows goes on)
.
.(rows goes on)
Run Code Online (Sandbox Code Playgroud)
我想要做的是附加这些行并有一个名为Employees的列.这就是我想要的:
雇员
Andy
Conan
Jay
Donald
Martin
Mark
Kevin
Jason
Ray
Daryl
.
.
Run Code Online (Sandbox Code Playgroud)
我不想创建另一个表,我只想添加一个新列.我该怎么办?
当我在开发者控制台中执行此代码时
PushTopic pushTopic = new PushTopic();
pushTopic.ApiVersion = 23.0;
pushTopic.Name = 'Test';
pushTopic.Description = 'test';
pushtopic.Query = 'SELECT Id, Account.Name FROM Case';
insert pushTopic;
System.debug('Created new PushTopic: '+ pushTopic.Id);
Run Code Online (Sandbox Code Playgroud)
我收到此消息:
致命错误System.DmlException:插入失败.第0行的第一个例外; 第一个错误:INVALID_FIELD,不支持关系:[QUERY]
相同的查询在查询编辑器上运行正常,但是当我将其分配给推送主题时,我得到了INVALID_FIELD异常.
如果底线是异常消息所说的内容,Push Topic对象不支持这种关系,那么如何创建一个Push Topic对象来返回我正在寻找的数据?
sql-insert ×10
sql ×7
postgresql ×3
sql-server ×3
mysql ×2
python ×2
sql-update ×2
apex-code ×1
api ×1
azure ×1
boolean ×1
create-table ×1
database ×1
exception ×1
go ×1
salesforce ×1
soql ×1
sqlx ×1
t-sql ×1
unnest ×1