MySQL更新-MAX()分组依据
如何更改:MySQL更新-MAX()分组依据,sql,mysql,group-by,Sql,Mysql,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 user INNER JOIN postcode ON user.postcode LIKE CONCAT(postcod
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 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;
为什么要像CONCAT(postcode.postcode,“%”)一样使用
?