我正在使用SQL Server 2008,并尝试在管理工作室中运行以下查询:
UPDATE
Table1 as T1 INNER JOIN Table2 as T2 ON T1.ID=T2.ID
SET T1.SomeValue = T2.SomeValue
GO
Run Code Online (Sandbox Code Playgroud)
虽然不起作用.是否支持这种事情?
卡尔
[编辑]让我更清楚,我不想做类似的事情:
UPDATE
Table1 as T1 INNER JOIN Table2 as T2 ON T1.ID=T2.ID
SET T1.SomeValue = T2.SomeValue
T1.SomeValue2 = T2.SomeValue2
T1.SomeValue3 = T2.SomeValue3
T1.SomeValue4 = T2.SomeValue4
GO
Run Code Online (Sandbox Code Playgroud)
即无需显式执行T1.SomeValue = SELECT ...,T2.SomeValue = SELECT ...
我正在尝试修复一个大型股票交易所数据库的错误.一列(数量)在每个刻度上具有交易量,而其他列存储累积量(即,当天的先前刻度的总和).在某些情况下,这第二列是错误的(不是很多,所以我们可以安全地假设相邻的刻度线没有错误).因此理论上修复很容易:只需搜索累积量减少的刻度(这就足够了),然后从最后一个刻度中选择累积量并将当前刻度的数量相加.问题是我一直在努力开始在oracle中执行此操作的查询,但由于我缺乏sql的专业知识,我正在努力.这是我到目前为止所获得的:
update
(
select m.cumulative_volume, q.cum_volume_ant, q.quantity from
market_data_intraday_trades m
join
(
select * from
(select
product_key,
sequence_number,
lead(product_key) over (order by product_key, sequence_number) as product_key_ant,
to_char(trade_date_time, 'yyyymmdd') as fecha,
to_char(lag(trade_date_time) over (order by product_key, sequence_number), 'yyyymmdd') as fecha_ant,
cumulative_volume,
lead(cumulative_volume) over (order by product_key, sequence_number) as cum_volume_ant,
cumulative_volume - lead(cumulative_volume) over (order by product_key, sequence_number) as dif
from market_data_intraday_trades)
where product_key = product_key_ant
and fecha = fecha_ant
and dif < 0
and rownum < 10
) q
on m.sequence_number …Run Code Online (Sandbox Code Playgroud) 如何使用CFLOOP更新Access DB上的记录?我尝试使用下面的代码,但它似乎给了我一个重复的值而不是增量
我的代码:
<cfloop index="i" from="1" to="3">
<cfquery name="query" datasource="datasource">
update mytable
set
columnB = #i#
where columnA = 'a'
</cfquery>
</cfloop>
Run Code Online (Sandbox Code Playgroud)
columnB =所有数字3下的记录输出,应为1,2,3
我的桌子看起来像这样....
Column A|ColumnA1|ColumnB
A A
A B
A C
Run Code Online (Sandbox Code Playgroud)
列A和A1填充了先前的CFLOOP和SQL插入.
我知道之前已经问过这个问题并且我已经完成了许多答案,现在正在处理其中一个答案,但是需要一些帮助来处理以下代码.
<?php
$title = $_POST['title'];
$description = $_POST['description'];
$item_name = $_POST['item_name'];
$A = count($item_name);
include ("connection.php");
try {
$set_details = "UPDATE images
SET title = :title,
description = :description,
WHERE item_name = :item_name";
$STH = $conn->prepare($set_details);
$i = 0;
while($i < $A) {
$STH->bindParam(':title', $title[$i]);
$STH->bindParam(':description', $description[$i]);
$STH->bindParam(':item_name', $item_name[$i]);
$STH->execute();
$i++;
}
}
catch(PDOException $e) {
echo "I'm sorry, but there was an error updating the database.";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}
?>
Run Code Online (Sandbox Code Playgroud)
执行时我没有错误,没有提交到mysql表,如果你发现了什么请告诉我,或者如果有更好的方法可以解决这个问题,你可以指点我一个教程,我没有多少工作PDO或多行更新.
提前致谢.
致山姆:
print_r($STH->errorInfo());
Run Code Online (Sandbox Code Playgroud)
输出是:
Array …Run Code Online (Sandbox Code Playgroud) 我在处理SQL时很少使用update语句,这样做时会有点紧张.在之前的一期中,我提出了它,我决定在一些表中添加一个标识列作为代理键.考虑到170万行,我希望尽可能顺利地完成这项工作.所以我需要做的是运行一个循环更新并使用相关数据更新每个字段.
表1:tblPostCodeLookup
Postcode | Postcode ID
AB44 | 1
AB45 | 2
Run Code Online (Sandbox Code Playgroud)
表2:tblPostcodeStreetView
ID | Postcode | Postcode ID
1 | AB446TR | 1
2 | AB447TY | 1
3 | AB457HH | 2
Run Code Online (Sandbox Code Playgroud)
我已经做了基本的更新
UPDATE tblPostcodesStreetsView
SET PostcodeID = 1
WHERE (postcode LIKE 'AB44%')
Run Code Online (Sandbox Code Playgroud)
然而,让这个贯穿并更新每一个导致我的问题!
在插入/更新许多行时,我知道SQLite的"问题",但事实并非如此.
我正在更新一行中的一个字段,由PK索引,在一个包含约250条记录的表中.查询总是需要大约200毫秒.这听起来很少,但它很大.
为什么1个非常简单的UPDATE查询需要200毫秒?所有阅读都非常快速.
我试过了:
BEGIN并且COMMIT- 没有变化,因为它只是一个声明PRAGMA journal_mode=PERSIST - 没有变化,显然磁盘io不是问题?UPDATE语句 - 这对于时间来说非常有用!但它不是很持久要在同一系统上与MySQL进行比较:在非常相似的数据库中为0.6ms.
我不需要事务安全性(ACID?)或任何你称之为.如果计算机在此查询期间崩溃,我可以丢失所有更改.MySQL(InnoDB)有一个选项:innodb_flush_log_at_trx_commit.SQLite有类似的东西吗?
我正在使用sqlite-3.7.9,如果这很重要的话.
我想在SQL中做一些我想象的非常基本的东西,但我似乎无法弄明白.
我有2张桌子:
省份 - >
id | name | pCode | country_id | cCode
78840113-a0e5-11e4-8237-de7fe3f523cf | Alabama | AL | 1228 |
7884030c-a0e5-11e4-8237-de7fe3f523cf | Alaska | AK | 1228 |
788403ea-a0e5-11e4-8237-de7fe3f523cf | Arizona | AZ | 1228 |
788404a2-a0e5-11e4-8237-de7fe3f523cf | Arkansas | AR | 1228 |
Run Code Online (Sandbox Code Playgroud)
和国家 - >
iso_code | name | country_id
AD | Andorra | 1005
AE | United Arab Emirates | 1225
AF | Afghanistan | 1001
AG | Antigua and Barbuda | 1009
Run Code Online (Sandbox Code Playgroud)
我只想让省份中的cCode列填充相应的iso_code(如果省份和国家/地区的country_id相同).
我已经尝试了很多东西,甚至没有在这里写我的代码,我甚至不知道哪个方向是正确的方法(加入,插入,更新??).我完全卡住了请帮助我!
我们的用例:
对于表格USERS:
如果用户处于非活动状态(列)超过该分钟,则更新所有行('N'列的设置值ACTIVE).'LAST_VISIT'60
Google帮助我找到了如何获取db中的当前时间(我使用Oracle):
SELECT sysdate FROM dual;
Run Code Online (Sandbox Code Playgroud)
然后我找到了如何找到两个日期之间的分钟差异的方法:
SELECT(date1 - date2)*1440
Run Code Online (Sandbox Code Playgroud)
看起来有点难看......但还可以.
现在,我正在努力将所有这些结合在一起:
UPDATE USERS u
SET ACTIVE='N'
WHERE SELECT((SELECT sysdate FROM dual) - u.LAST_VISIT)*1440 >60;
Run Code Online (Sandbox Code Playgroud)
能否请您查看我的最终查询.
好吗?或者,也许,可以优化它?
TBL_Log如果从C#输入的值不是,我想更新表的任何列NULL.这是我的存储过程:
Alter PROCEDURE [dbo].[SP_Update_User]
(@User_id as int,@User_Names as nvarchar(max),@End as char(8),@Start as nvarchar(max) ,@Count as int)
AS
BEGIN
UPDATE [dbo].[TBL_Log]
SET User_Names = @User_Names
,[Start] = @start
,[End] = @End
,[Count] = @Count
where User_id = @User_id
END
Run Code Online (Sandbox Code Playgroud)
我试图做这项工作,但没有成功.
D1类代码:
public static DataSet Update_User(int @User_id, string @User_Names, string @End, string @Start, int @Count)
{
SqlConnection myConnection = new SqlConnection(strConecctionString);
SqlDataAdapter sqlcmd = new SqlDataAdapter("SP_Update_UserData_Bot", myConnection);
sqlcmd.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter parameterID_category_ID = new SqlParameter("@User_id", SqlDbType.Int);
parameterID_category_ID.Value = User_id; …Run Code Online (Sandbox Code Playgroud) 我有一个关于MySQL中"更新"的问题.我有两张桌子table1并且table2已连接table1.id=table2.tab1.现在,我想table2根据值中的值更新值table1.我试图像这样做:
UPDATE table2 SET table2.val='new value'
WHERE table1.id=table2.tab1 AND table1.val='xy'
Run Code Online (Sandbox Code Playgroud)
换句话说,我想更改相应条目的值为'xy'的val所有条目的值.table2table1
不幸的是,这不起作用.有人能给我一个暗示吗?