相关疑难解决方法(0)

根据条件使用另一个表的列更新列值

我有两张桌子......

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)

我该怎么做?

mysql sql sql-server oracle

102
推荐指数
2
解决办法
36万
查看次数

使用另一个表中的数据更新一个表

表格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)

如何做到这一点:

  • SQL Server
  • MySQL的
  • PostgreSQL的
  • 神谕

sql database

46
推荐指数
4
解决办法
17万
查看次数

使用select语句将Srt插入到语句中

我想从表(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,今天是一个字符串变量,仍然没有数据插入,什么是错的?

sql insert

8
推荐指数
1
解决办法
6290
查看次数

在表之间移动数据

我目前在我的一个小项目中使用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)

如果有人可以给我一个这样的更新变更集的示例,那就太好了。

谢谢!

liquibase

5
推荐指数
1
解决办法
3088
查看次数

如何在更新时连接表

我有以下查询:

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)

mysql sql join sql-update

2
推荐指数
1
解决办法
3916
查看次数

MYSQL - 更新另一个表中的多行

我有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)

它没有奏效.

在此输入图像描述

mysql insert-update

2
推荐指数
1
解决办法
3254
查看次数

使此SQL查询更有效

我有以下查询,它根据采购订单检查收货,以查看最初订购的商品以及通过收货预订的商品数量.例如,我下了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)

c# sql foreach

1
推荐指数
1
解决办法
286
查看次数

使用INNER JOIN进行更新

在这个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'.

t-sql sql-server-2008

1
推荐指数
1
解决办法
3万
查看次数

在C#/ .NET中执行批量更新的最快方法

我试图弄清楚什么是通过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个批量执行它们....

有没有可以"加快速度"的图书馆/解决方案?

有人可以帮我吗 …

c# sql-server performance c#-4.0 bulkupdate

1
推荐指数
1
解决办法
7217
查看次数