MYSQL - INSERT INTO 使用表 1 的 WHERE 条件

标签 mysql insert where-clause insert-into

在阅读了所有“INSERT INTO”帖子和文档之后,我仍然不确定我想要的是否可行。 我想将下面的 UPDATE 更改为 INSERT INTO,因为我有很多 10 万条(速度问题):

   UPDATE city c 
   SET 
    c.g17h = '3196504', 
    c.g17q = '2593487', 
    c.g17k = '0', 
    c.g17w = '0', 
    c.g17s = '0' 
   WHERE
    p17t = 30 AND p17l = '30';

UPDATE city c 
SET 
 c.g1h = '0', 
 c.g1q = '0', 
 c.g1k = '0', 
 c.g1w = '0', 
 c.g1s = '0' 
WHERE
 p1t = 1 
 AND p1l = '1';

但是,我最好的解决方案不起作用:

INSERT INTO city (g17h, g17q, g17k, g17w, g17s)  
SELECT 
 '3196504',
 '2593487', 
 '0', 
 '0', 
 '0' 
FROM valuestoretab 
WHERE 
 p17t = 30 
 AND p17l = '30';

这当然是因为我的 WHERE 条件只能在第一个表(city)中得到满足,而不能在第二个表中得到满足,而第二个表只是一个值表,而 city 表是一个数据集,其中每个 id 都有特定的值对于 p17t、p17l 等。 澄清一下:

The first table (city) looks like
cityid1, ownerid1, islandid1, p17t, p17l
cityid2, ownerid2, islandid2, p17t, p17l

p17t 和 p17l 的每一行都有不同的值。

所以,我的问题是: 1. 是否可以为要插入的表编写带有 WHERE 条件的 INSERT 查询? 2. 如果不是,我是否必须坚持我的更新或是否有其他(快速!)解决方案?

感谢社区!

fiddle

最佳答案

可以使用 select 语句快速回答插入

Insert INTO MyTable (Val1, Val2)
Select 
 SomeValue, 
 AnotherValue
From MyOtherTable
Where Date = Getdate()

另一方面,您也可以更新许多记录,如下例所示:

Update t1
Set 
 t1.Val1 = t2.SomeValue,
 t1.Val2 = t2.AnotherValue
From MyTable t1 
Inner join MyOtherTable t2 ON t1.PK = t2.FK
where t2.Date = getdate()

编辑:

当我阅读以下查询时,我假定 p17t 和 p17l 来自 valuestoretab。

UPDATE city c 
SET 
 c.g17h = '3196504', 
 c.g17q = '2593487', 
 c.g17k = '0', 
 c.g17w = '0', 
 c.g17s = '0' 
WHERE
 p17t = 30 AND p17l = '30';

==> 将其更改为:

UPDATE c 
SET 
 c.g17h = '3196504', 
 c.g17q = '2593487', 
 c.g17k = '0', 
 c.g17w = '0', 
 c.g17s = '0' 
FROM City c, ValueStoreTab v
WHERE
 c.SomeCol = v.SomeCol -- Here, your relation must exist!
 AND v.p17t = 30 AND v.p17l = '30';

关于MYSQL - INSERT INTO 使用表 1 的 WHERE 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23262255/

相关文章:

php - 忽略特定的 WHERE 标准

mysql - 在计算列(包括子查询)上使用 WHERE 子句

mysql在where子句中使用逻辑+组函数的无效使用

php - 如果生日在 MySQL 中存储为类型 "Date",您将如何确定今天在 PHP 中是否是用户的生日?

php - 通过更改为单个查询而不是将其放入循环中进行优化

PHP - 根据订阅包限制用户的发票数量

php - mysql如何向子表中插入数据

php - 限制在一个页面上查看的线程数

php - mysqli 为 INSERT 查询返回 true,未插入行

php - MySQL - 'INSERT INTO - ON DUPLICATE KEY UPDATE' 会导致数据丢失吗