0
SELECT * FROM products where [...]

将返回 2+ 个条目:

+------------+-------------+
| product_id | provider_id |
+------------+-------------+
| 0000001    |      NULL   |
+------------+-------------+
| 0000004    |      0032   |
+------------+-------------+
| 0000009    |      NULL   |
+------------+-------------+

我正在寻找(如果存在)一个 MySQL 命令来填充provider_id它不为空的行到其他NULL

+------------+-------------+
| product_id | provider_id |
+------------+-------------+
| 0000001    |      0032   |
+------------+-------------+
| 0000004    |      0032   |
+------------+-------------+
| 0000009    |      0032   |
+------------+-------------+

它肯定可以通过发出几个查询执行在 PHP 中完成。但是我愿意用最少的 php 代码处理和大多数 MySQL/SQLite 来使它整洁。

谢谢你的帮助!

4

1 回答 1

0

一种直截了当的方法:

UPDATE products SET provider_id = (SELECT provider_id FROM products WHERE [...])
WHERE [...] -- same condition here
AND provider_id IS NULL -- this is probably useless

这假定您的原始查询中只有一行具有 ( provider_id IS NOT NULL)。否则它将失败并显示错误消息(并且什么也不做)。

于 2013-06-12T16:30:28.070 回答