所以我看了一下HERE,但对于我正在做的事情的简单性来说,它似乎有点复杂。最多我会处理一百个要更新的项目(大多数时候它会更像 40 个) )
目前我有这样的东西
$sql_update = '';
for($x = 0; $x < count($nodes); $x++){
if($nodes[$x]['loaded'] == 'true'){
if($nodes[$x]['changed'] == 'true'){
$sql_update .= 'UPDATE `genetic_decomp`.`tbl_node2view` SET `x` = "'.$nodes[$x]['location']['x'].'", `y` = "'.$nodes[$x]['location']['y'].'" WHERE `tbl_node2view`.`id` = "'.$nodes[$x]['id'].'";';
$sql_update .= 'UPDATE `genetic_decomp`.`tbl_nodes` SET `name` = "'.$nodes[$x]['name'].'", `type` = "'.$nodes[$x]['type'].'" WHERE `tbl_nodes`.`node_id` = "'.$nodes[$x]['id'].'";';
}
}
}
if($sql_update != ''){
$sql_result=mysql_query($sql_update,$connection) or exit("Sql Error".mysql_error());
}
Run Code Online (Sandbox Code Playgroud)
现在,当我让它打印出输出echo $sql_update,然后将输出粘贴到 MAMP 中的 SQL 框中时,它工作正常..遍历并更新我想要的两个表中的行
但是,当我运行上面的代码时,它会返回:
Sql Error
You have an error in …Run Code Online (Sandbox Code Playgroud) 我有一个mysql命令:
update table_demo SET flag= 1 where flag=0 ORDER BY id ASC LIMIT 10
Run Code Online (Sandbox Code Playgroud)
并且需要在 Postgres 中使用相同的命令,我收到此错误:
错误:语法错误位于或附近
'ORDER'
假设我有一个包含电子邮件和生日的听写列表:
p = [\
{'email': 'someone@somewhere.com', 'birthday': '1990-01-01'},
{'email': 'someone_else@somewhereelse.com', 'birthday': '1980-02-05'},
#...etc
]
Run Code Online (Sandbox Code Playgroud)
我想更新People数据库中的对象。原始 sql 通常会有与 一样多的查询len(p),所以这让我想到这样做:
from django.db import IntegrityError, transaction
for person in p:
try:
with transaction.atomic():
People.objects.filter(email=person['email']).update(birthday=person['birthday'])
except IntegrityError:
#handle the exception
Run Code Online (Sandbox Code Playgroud)
我对 Django 的经验还不够,不知道这是否是一个好的实践。表达我想做的事情最Pythonic的方式是什么?
我在开发环境中有这样的表
EMP_ID 名称部门 1 AA 2 B BB 3 C 抄送
我在测试环境中有相同的表,但在 DEPT 列中有空值。无论如何,是否可以根据 EMP_ID 生成更新语句,以便我可以将 DEPT 值从 dev 复制到测试?例如 IDE 应该生成 : update EMPLOYEE set dept='AA' where EMP_ID=1. 我使用 Oracle Sqldeveloper 和 PL/SQL Developer。
sql auto-generate plsqldeveloper oracle-sqldeveloper sql-update
我有一张这样的表:
----------------------------------
| id | date1 | date2 | type |
----------------------------------
| 1 | NULL | NULL | A |
| 1 | NULL | NULL | B |
| 1 | NULL | NULL | A |
| 1 | NULL | NULL | A |
| 1 | 2016-08-02 | NULL | C |
| 1 | NULL | NULL | B |
| 2 | NULL | NULL | A |
| 2 | NULL | …Run Code Online (Sandbox Code Playgroud) 我想更新我的 sql 表。我在这里搜索并找到了有关如何解决该问题的解决方案。但遗憾的是它只是不会更新数据库。我不知道问题是什么。我检查了 sql 命令几次写错误,但找不到任何错误或修复它们,但遗憾的是仍然没有。我想它在 try 块中,但无法找到它。
这是我的代码:
string connetionString = null;
SqlConnection connection;
SqlCommand command;
string sql = null;
SqlDataReader dataReader;
connetionString = "Data Source=xxx\\xxx;Initial Catalog=xxx;User ID=xxx;Password=xxx";
sql = "UPDATE Employees SET LastName = '" + Lnamestring + "', FirstName = '" + Fnamestring + "', Title = '" + Titelstring + "', TitleOfCourtesy = '" + ToCstring + "', BirthDate = '" + Birthdatestring + "', HireDate = '" + Hiredatestring + "', Address = '" + Adressstring …Run Code Online (Sandbox Code Playgroud) 我有一个这样的更新语句:
UPDATE TABLE1
SET TABLE1.COL = TABLE2.COL
FROM TABLE1
INNER JOIN TABLE2 ON TABLE1.TAB2ID = TABLE2.ID
WHERE TABLE1.COL1 = '123'`
Run Code Online (Sandbox Code Playgroud)
是否有办法知道实际更新了多少记录的问题。
如MERGE该OUTPUT $ACTION命令。
postgreSQL 中的更新列如何仅设置第一个字符大写?
例如。测试 ---> 测试
我正在尝试,但不起作用
UPDATE car SET carName=UPPER(LEFT(carName,1)) + LOWER(SUBSTRING(carName,2,LEN(carName)))
Run Code Online (Sandbox Code Playgroud) 我想更新房间数据库中的多行。但我没有对象 - 我只有 ID。
如果我更新一行,我会在我的 DAO 中写这样的内容:
@Query("UPDATE items SET place = :new_place WHERE id = :id;")
fun updateItemPlace(id:Int, new_place:String)
Run Code Online (Sandbox Code Playgroud)
对于多行,我需要这样的东西:
@Query("UPDATE items SET place = :new_place WHERE id = :ids;")
fun updateItemPlaces(ids:List<Int>, new_place:String)
Run Code Online (Sandbox Code Playgroud)
或者
@Query("UPDATE items SET place = :new_place WHERE id IN :ids;")
fun updateItemPlaces(ids:String, new_place:String)
Run Code Online (Sandbox Code Playgroud)
我在我的 ids-String 中写了类似 '(1,4,7,15)' 的内容
有人可以告诉我进行此类更新的好方法吗
因为像
val ids = ListOf(1,4,7,15)
ids.forEach{
itemDao.updateItemPlace(it,'new place')
}
Run Code Online (Sandbox Code Playgroud)
似乎不是一个好的解决方案
我有一个存储过程,用于根据列的值是否存在来插入或更新表。这工作正常,除非我只想在传递参数时设置某些列的值。这是因为我不想用 null 覆盖现有的列值。
下面是存储过程的概念:
CREATE PROCEDURE [dbo].[p_SaveState]
@Foo nvarchar(50),
@Bar nvarchar(20) = null,
@Something nvarchar(20) = null
AS
BEGIN
IF EXISTS (SELECT TOP(1) Foo FROM dbo.[State] WHERE Bar = @Bar)
BEGIN
UPDATE [dbo].[State]
SET Bar = @Bar,
Something = @Something
WHERE (--condition--)
END
ELSE
BEGIN
... -- INSERT statement goes here
Run Code Online (Sandbox Code Playgroud)
我正在尝试完成这样的事情:
UPDATE [dbo].[State]
SET Bar = @Bar,
IF (@Something IS NOT NULL) Something = @Something
WHERE (--condition--)
Run Code Online (Sandbox Code Playgroud)
但我不相信我可以使用 CASE,因为我没有在不执行选择的情况下设置原始值。
我怎样才能达到这种效果?
sql-update ×10
sql ×4
mysql ×3
sql-server ×3
postgresql ×2
t-sql ×2
android ×1
android-room ×1
c# ×1
django ×1
kotlin ×1
php ×1
python ×1