我有一个包含以下列的推文数据库
similarity(W, V) > 0.7
数据库包含每个不同+------------------------+--------------+
| Field | Type |
+------------------------+--------------+
| id | varchar(128) |
| message_id | bigint(20) |
| message | text |
| from_id | int(12) |
| cnty | int(5) |
| county | varchar(64) |
| city | varchar(64) |
| state | varchar(2) |
+------------------------+--------------+
的多条消息。每个from_id
都有一行包含from_id
,cnty
,county
。和city
以及具有相同state
的所有其他行都具有这些列的NULL值。我想用每个from_id
的相同值填充它们。这在MySQL中可行吗?我的第一个想法是写一个Python脚本来做到这一点,但也许这是过度的。
答案 0 :(得分:2)
您可以使用获取所有非空值的子查询,然后使用带连接的UPDATE查询:
UPDATE
tweets INNER JOIN (
SELECT from_id, MAX(cnty) AS cnty, MAX(country) AS country, MAX(city) AS city, ...
FROM tweets
GROUP BY from_id) m
ON tweets.from_id = m.from_id
SET
tweets.cnty=m.cnty,
tweets.country=m.country,
tweets.city=m.city,
...