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处理它。
感谢您的帮助!
答案 0 :(得分: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
)。否则它将失败并显示错误消息(并且不执行任何操作)。