我有两张桌子......
table1(id,item,price)值:
id | item | price
-------------
10 | book | 20
20 | copy | 30
30 | pen | 10
Run Code Online (Sandbox Code Playgroud)
.... table2(id,item,price)值:
id | item | price
-------------
10 | book | 20
20 | book | 30
Run Code Online (Sandbox Code Playgroud)
现在我想:
update table1
set table1.Price = table2.price
where table1.id = table2.id
and table1.item = table2.item.
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
表格1:
id name desc
-----------------------
1 a abc
2 b def
3 c adf
Run Code Online (Sandbox Code Playgroud)
表2:
id name desc
-----------------------
1 x 123
2 y 345
Run Code Online (Sandbox Code Playgroud)
如何运行可以使用相同的ID更新表1和表2的名称和desc 的SQL更新查询?所以我得到的最终结果是
表格1:
id name desc
-----------------------
1 x 123
2 y 345
3 c adf
Run Code Online (Sandbox Code Playgroud)
如何做到这一点:
我想从表(item2)中的表(item1)和不在该item2表中的日期插入一些值.
如何使用select语句将SQL插入语句写入语句来实现?
例如:
INSERT into item1(date, name, qty)
values(datevalue, select col1, col2 from item2);
Run Code Online (Sandbox Code Playgroud)
这不起作用.我该怎么做才能解决这个问题?
insert into daily_stock(date, product_id, name, weight, qty, free_issues, sales_price,
purchased_price, category, last_purchased_date)
select
**'"+today+"'**,
productId, name, weight, newQty, freeIssues, NewSalesPrice,
NewPurchasePrice, category, datePurchased
from product
Run Code Online (Sandbox Code Playgroud)
我正在使用java,今天是一个字符串变量,仍然没有数据插入,什么是错的?
我目前在我的一个小项目中使用Liquibase,效果很好。但是现在我正面临一个问题。我的ChangeLog可以在我的测试环境中按预期工作,但在我的生产环境中却无法正常工作。发生这种情况是因为我的产品表包含几行数据。
我知道liquibase中有一个UPDATE-Command,但是我不确定如何正确使用它。
我要存档的是将一列从表B移动到表A,而不会丢失其数据。表B包含表A的外键。普通的SQL语句看起来像update A set A.x = (select B.x from B where B.id = A.id)
如果有人可以给我一个这样的更新变更集的示例,那就太好了。
谢谢!
我有以下查询:
select count(L.ID)
from LA inner join L on (LA.leadid = L.ID)
where L.status = 5
and L.city = "cityname"
and Date(LA.Datetime) < Date_Sub(Now(), INTERVAL 6 MONTH);
Run Code Online (Sandbox Code Playgroud)
查找特定城市中状态为5且年龄超过6个月(日期存储在洛杉矶)的记录.这将返回大约4k的结果.我想在每个记录上将状态值更新为1,因此我的更新如下所示:
update L, LA
set L.status = 1
where L.status = 5
and L.city = "cityname"
and Date(LA.SomeDatetime) < Date_Sub(Now(), INTERVAL 6 MONTH);
Run Code Online (Sandbox Code Playgroud)
但它会停止并锁定数据库.我怀疑有一个问题,因为没有加入,但我尝试类似的东西:
update L, LA
from L inner join LA on (L.OID = LA.leadid)
set L.status = 1
where L.status = 5
and L.syscity = "cityname"
and Date(LA.SomeDatetime) < Date_Sub(Now(), INTERVAL …Run Code Online (Sandbox Code Playgroud) 我有2张桌子.一个来自昨天(300k行),另一个来自今天,具有相同的行数,但数据在某些列中发生了变化.
这两个表有大约120列.
我如何只更新更改.
我尝试过使用删除:
delete from tableA
where id in (select id from tableB)
Run Code Online (Sandbox Code Playgroud)
但它太慢了.
也试过了
update tableA inner join tableB
on tableA.id=TableB.id
Run Code Online (Sandbox Code Playgroud)
它没有奏效.
我有以下查询,它根据采购订单检查收货,以查看最初订购的商品以及通过收货预订的商品数量.例如,我下了10个香蕉奶昔的采购订单,然后我生成了一个收据,说明我在所述采购订单上收到了5个这样的奶昔.
SELECT t.PONUM, t.ITMNUM, t.ordered,
SUM(t.received) as received,
t.ordered - ISNULL(SUM(t.received),0) as remaining,
SUM(t.orderedcartons) as orderedcartons,
SUM(t.cartonsreceived) as cartonsreceived,
SUM(t.remainingcartons) as remainingcartonsFROM(SELECT pod.PONUM,
pod.ITMNUM, pod.QTY as ordered, ISNULL(grd.QTYRECEIVED, 0) as received,
pod.DELIVERYSIZE as orderedcartons,
ISNULL(grd.DELIVERYSIZERECEIVED, 0) as cartonsreceived,
(pod.DELIVERYSIZE - ISNULL(grd.DELIVERYSIZERECEIVED, 0)) as remainingcartons
FROM TBLPODETAILS pod
LEFT OUTER JOIN TBLGRDETAILS grd
ON pod.PONUM = grd.PONUM and pod.ITMNUM = grd.ITMNUM) t
GROUP BY t.ITMNUM, t.PONUM, t.ordered
ORDER BY t.PONUM
Run Code Online (Sandbox Code Playgroud)
返回以下数据:
PONUM ITMNUM ordered received remaining orderedcartons cartonsreceived remainingcartons
1 1 …Run Code Online (Sandbox Code Playgroud) 在这个SQL语句中出了什么问题,我找不到任何错误的东西
UPDATE Master_Adjust
INNER JOIN [dbo].[Master] ON Master_Adjust.Empno = [dbo].[Master].Empno
SET Master_Adjust.GratuityYtodate = [dbo].[Master].GratuityYtodate,
Master_Adjust.ManualBasicPay = 0,
Master_Adjust.ManualTax = 0,
Master_Adjust.ManualNapsa = 0,
Master_Adjust.ManualPension = 0,
ManualCharity = 0
Run Code Online (Sandbox Code Playgroud)
错误消息是
Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'INNER'.
我试图弄清楚什么是通过SQL服务器中的迷你控制台应用程序执行批量更新的最佳方式.我已经编写了自己的批量更新方式,如下所示:
SqlCommand command = new SqlCommand();
command.Connection = new SqlConnection("Data Source=.;Initial Catalog=mydb;Integrated Security=SSPI");
command.Connection.Open();
for (int i = 0; i < items.Count; i = i + 1000)
{
var batchList = items.Skip(i).Take(1000).ToList();
for (int j = 0; j < batchList.Count(); j++)
{
command.CommandText += string.Format("update Items set QuantitySold=@s_id{0} where ItemID = @id{0};", j);
command.Parameters.AddWithValue("@s_id" + j, batchList[j].QuantitySold);
command.Parameters.AddWithValue("@id" + j, batchList[j].ItemID);
}
command.ExecuteNonQuery();
command = new SqlCommand();
command.Connection = new SqlConnection("Data Source=.;Initial Catalog=mydb;Integrated Security=SSPI");
command.Connection.Open();
}
command.Connection.Close();
Run Code Online (Sandbox Code Playgroud)
但是我对这个的性能不是很满意,在这样做时更新我的数据库中的50000-100000个记录变得非常慢,即使它是1000个批量执行它们....
有没有可以"加快速度"的图书馆/解决方案?
有人可以帮我吗 …
sql ×5
mysql ×3
c# ×2
sql-server ×2
bulkupdate ×1
c#-4.0 ×1
database ×1
foreach ×1
insert ×1
join ×1
liquibase ×1
oracle ×1
performance ×1
sql-update ×1
t-sql ×1