簡體   English   中英

MySQL更新-MAX()GROUP BY

[英]MySQL UPDATE - MAX() GROUP BY

我該如何更改:

SELECT user.postcode, max(postcode.postcode) as postcode
FROM user
INNER JOIN postcode ON user.postcode LIKE CONCAT( postcode.postcode,  "%" )
GROUP BY user.postcode

變成類似UPDATE?

UPDATE user 
INNER JOIN postcode ON user.postcode LIKE CONCAT(postcode.postcode, "%") 
SET user.lat = postcode.lat, user.lng = postcode.lng

我不知道如何考慮MAX()和GROUP BY

回答

以下是我的@ceteras代碼版本。 它很棒!

DROP TABLE IF EXISTS tmp;
CREATE TABLE tmp AS
SELECT user.user_id, max(postcode.postcode) AS postcode, postcode.lat, postcode.lng
FROM user
INNER JOIN postcode ON user.postcode LIKE CONCAT( postcode.postcode,  "%" )
GROUP BY user.postcode;
ALTER TABLE tmp ADD PRIMARY KEY(user_id);

UPDATE user 
INNER JOIN tmp ON user.user_id = tmp.user_id
SET user.lat1 = tmp.lat, user.lng1 = tmp.lng;

DROP TABLE tmp;

這是一份工作嗎? 如果是,請嘗試以下操作:

drop table if exists tmp;
create table tmp as 
SELECT user.postcode, max(postcode.postcode) as post_code
FROM user
INNER JOIN postcode ON user.postcode LIKE CONCAT( postcode.postcode,  "%" )
GROUP BY user.postcode;
alter table tmp add unique key(postcode, post_code), add key (post_code, postcode);

UPDATE user 
INNER JOIN tmp ON user.postcode = tmp.postcode
inner join postcode p on p.postcode = tmp.post_code
SET user.lat = p.lat, user.lng = p.lng;

drop table tmp;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM