我有表 A 和表 B 具有多对多关系。表AB是链接表。
Table: Columns:
A { Id, Name }
AB { A_Id, B_Id }
B { Id, Name }
Run Code Online (Sandbox Code Playgroud)
我想将行插入到表 A 中,然后使用该行的 Id(Id 具有自动递增的标识)插入到链接表中。
是否可以在单个 SQL 命令中执行此操作?
示例(伪sql):
insert into A (Name) values (@name)
insert into AB (A_Id, B_Id) values ([previous id], @b_Id)
Run Code Online (Sandbox Code Playgroud) 我正在 SQL Server 2017 中工作,我有一个以下形式的表:
表当前
COL1 COL2
-----------
A 1
B 3
C 56
Run Code Online (Sandbox Code Playgroud)
我想定期将其插入表中tbl_release。
该表将有一个额外的 ID 列,我希望随着每次“批量插入”自动递增。tbl_current例如,假设我执行into的摄取tbl_release,它看起来像这样:
tbl_release
ID COL1 COL2
----------------
1 A 1
1 B 3
1 C 56
Run Code Online (Sandbox Code Playgroud)
现在,假设我使用相同的数据执行另一次摄取,它看起来像:
tbl_release
ID COL1 COL2
----------------
1 A 1
1 B 3
1 C 56
2 A 1
2 B 3
2 C 56
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最佳方法是什么?是否有一些 SQL Server 功能可以实现此目的,或者我是否需要运行一些子查询?
我不确定这个错误可能来自哪里。
我正在使用 VB.NET 将数据插入到 MS Access 2016 中。我能够执行其他 SQL 查询没问题,但是这个查询返回Syntax error in INSERT INTO statement错误:
sql = "INSERT INTO Sense_Translation (SenseFK, LanguageCode, Translation) VALUES (?, ?, ?)"
cmd = New OleDbCommand(sql, myConnection)
cmd.Parameters.Add(New OleDbParameter("SenseFK", senseID))
cmd.Parameters.Add(New OleDbParameter("LanguageCode", lcodeID))
cmd.Parameters.Add(New OleDbParameter("Translation", tr.Translation))
Try
cmd.ExecuteNonQuery()
cmd.Dispose()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Run Code Online (Sandbox Code Playgroud)
我已经检查并仔细检查了 Access 和 VB.NET 中的表名是否匹配,参数是否匹配,以及参数在 SQL 语句和 Parameters.Add(我什至不确定后者是否重要,我只是为了以防万一。)
我还检查了传递给参数的类型是否匹配 -senseID是数字、lcodeID是数字tr.Translation还是字符串,与表匹配。尽管如果它是类型不匹配,我预计错误无论如何都会有所不同。
只是为了比较,当我执行下面的代码时,并没有返回错误:
sql = "INSERT INTO Sense (EntryFK, SenseInformation) …Run Code Online (Sandbox Code Playgroud) create table employee (
employee_id number (5),
first_name varchar2(100),
last_name varchar2(100),
salary number (10),
department_id number(5),
hire_date date,
constraint pk_emp primary key (employee_id)
)
insert into employee (employee_id, last_name, salary )
values
(129, 'khaj', 19000),
(130, 'ravi', 20000);
Run Code Online (Sandbox Code Playgroud)
我有一个带有 7 个 BIT 列(A、B、C、D、E、F 和 G)的空表。我希望用代表这些列的所有可能组合的行填充此表。理想情况下,不会有包含完全相同组合重复项的行。虽然我在这里显示了 7 列,但列数可能会更多,因此该解决方案应该是可扩展的。
填充后的表格片段如下所示:
理想情况下,这将基于 INSERT 语句,但我也对 T-SQL 循环解决方案持开放态度。我曾尝试使用 CROSS JOINS,但我有限的知识并没有让我走得很远。
任何帮助将不胜感激。
我有一个这样的代码:
public IHttpActionResult Post(CUSTOMER [] newCustomer)
{
try
{
foreach (CUSTOMER item in newCustomer)
{
var AddedCust = db.CUSTOMERs.Add(item);
}
int insertedRecords = db.SaveChanges();
return Ok(insertedRecords);
}
catch (Exception)
{
return BadRequest(ModelState);
}
}
Run Code Online (Sandbox Code Playgroud)
使用 Postman,我尝试发布不止一条记录 - 但我得到了一个例外:
{
"NAME": "test1",
"SURNAME": "Aleksandrova",
"BIRTHPLACE": "Minsk",
"GENDER": "F",
"IDENTITYNO": "AA75 857445",
"IDENTITYPINCODE": 2552,
"BIRTHDATE": "1970-06-19T00:00:00"
}
{
"NAME": "test2",
"SURNAME": "Aleksat34t34ndrova",
"BIRTHPLACE": "Minsk",
"GENDER": "F",
"IDENTITYNO": "AA75 857445",
"IDENTITYPINCODE": 2552,
"BIRTHDATE": "1970-06-19T00:00:00"
}
{
"NAME": "test3",
"SURNAME": "Aleksandrova",
"BIRTHPLACE": "Minsk",
"GENDER": …Run Code Online (Sandbox Code Playgroud) 我有一个 C# 应用程序,用户可以在其中填写表单以将产品存储在 SQL Server 数据库中。
问题是每次存储产品(通过用户填写表单)时,价格(小数)都会自动转换为int并添加 1。
我最初认为这是应用程序的问题,但是,注册过程非常简单,我没有在那里发现任何错误,所以我直接从 SQL Server 插入了一行并且问题出现了,所以这告诉我问题是在 SQL Server 中,而不是在应用程序中。
执行
insert into product (code, description, unit_price, stock, category_code)
values (7, 'Window Cleaner', 20.50, 20, 3)
Run Code Online (Sandbox Code Playgroud)
结果价格为 21。
这是表定义
CODE INT NOT NULL,
DESCRIPTION VARCHAR(30) NOT NULL,
UNIT_PRICE DECIMAL NOT NULL,
STOCK INT NOT NULL,
CATEGORY_CODE INT NOT NULL
CONSTRAINT PK_PRODUCT PRIMARY KEY(CODE),
CONSTRAINT FK_CATEGORY_CODE FOREIGN KEY (CATEGORY_CODE) REFERENCES Category(CODE),
CONSTRAINT PRODUCT_POSITIVE_VALUES CHECK(UNIT_PRICE > 0 AND CODE >= 0 AND STOCK …Run Code Online (Sandbox Code Playgroud) 目前我正在尝试编写一个 sql 语句,该语句从一个表中进行选择,然后使用主键插入到一个辅助表中。我很难弄清楚我会怎么做。这是我现在拥有的选择和插入。第一个选择将返回多个结果。我需要每晚运行一次,所以我需要让它动态。
SELECT ParentTypeId FROM Config_OrderParentQueueType
INSERT INTO [dbo].[Config_OrderParentQueueTypeNotes]
([ParentTypeId]
,[NoteDate]
,[NoteText]
,[NoteSubmittedById])
VALUES
(This is the ID I need to insert from the select
,GETDATE()
,'Default Note'
,6)
Run Code Online (Sandbox Code Playgroud)
我试图弄乱行数,但 ID 并不总是顺序的。提前感谢有关我将如何执行此操作的任何帮助。
我projects在 postgreSQL 中有一个表,如下所示
id. project_name. col3. col4
1111. test. ... ...
Run Code Online (Sandbox Code Playgroud)
id仅当id不存在时,我才想为新插入一个新行。所以我写了下面的查询
INSERT INTO projects(id, project_name)
VALUES("1234", "Test_Project")
ON CONFLICT (id)
DO NOTHING
Run Code Online (Sandbox Code Playgroud)
但它给我一个错误
Query 1 ERROR: ERROR: column "1234" does not exist
LINE 2: VALUES("1234", "Test_Project_...
Run Code Online (Sandbox Code Playgroud)
请建议。
** 编辑**
id表中的列是一个 uuid 并且不是唯一的。可以有多个具有相同 ID 的行。根据 GMB 的建议,我尝试了以下
INSERT INTO projects(id, project_name)
VALUES('1234', 'Test_Project')
ON CONFLICT (create unique index on projects(id))
DO NOTHING
Run Code Online (Sandbox Code Playgroud)
我得到以下错误
Query 1 ERROR: ERROR: syntax error at or near "create"
LINE …Run Code Online (Sandbox Code Playgroud) 我想将 C# winform 值插入到 Mysql
有 3 列
name,id 是 TextBox 文本,gender 是 ComboBox 值
但是有错误和错误消息说: MySql.Data.MySqlClient.MySqlException: '你的 SQL 语法有错误; 检查与您的 MySQL 服务器版本相对应的手册,以了解在第 1 行的 '',')' 附近使用的正确语法
我应该修复什么代码?
using (MySqlConnection conn2 = new MySqlConnection(strconn))
{
conn2.Open();
string query = "INSERT INTO student1(name,id,gender) values ('" + name3.Text + "'," + id3.Text + "'," + gender3.SelectedValue+"');";
MySqlCommand cmd = new MySqlCommand(query, conn2);
cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud) sql-insert ×10
sql ×8
sql-server ×5
c# ×2
t-sql ×2
combinations ×1
decimal ×1
int ×1
json ×1
ms-access ×1
mysql ×1
oracle ×1
postgresql ×1
select ×1
sql-update ×1
string ×1
syntax-error ×1
vb.net ×1