如何从同一列中的另一个字段更新字段值



如何复制'url'值,如果它不是空的,为相同的'id',但另一个'lang'

<表类> id 朗 url tbody><<tr>11cat-url1221dog-url22

对于用户定义的变量,您可以使用一种棘手的方法

或者如果你有MySQL 8使用可以使用窗口函数

CREATE TABLE tab1 (
`d` INTEGER,
`lang` INTEGER,
`url` VARCHAR(7)
);
INSERT INTO tab1
(`d`, `lang`, `url`)
VALUES
('1', '1', 'cat-url'),
('1', '2', NULL),
('1', '2', NULL),
('2', '1', 'dog-url'),
('2', '2',NULL);
UPDATE tab1
SET `url` = (@url := COALESCE(`url`, @url))
ORDER BY `d`;
SELECT * FROM tab1
d | lang | url-: |——:|:------1 | 1 | cat-url1 | 2 | cat-url1 | 2 | cat-url2 | 1 | dog-url2 | 2 | dog-url
CREATE TABLE tab2 (
`d` INTEGER,
`lang` INTEGER,
`url` VARCHAR(7)
);
INSERT INTO tab2
(`d`, `lang`, `url`)
VALUES
('1', '1', 'cat-url'),
('1', '2', NULL),
('1', '2', NULL),
('2', '1', 'dog-url'),
('2', '2',NULL);
UPDATE tab2
INNER JOIN
(SELECT d, FIRST_VALUE(`url`) OVER(PARTITION BY `d` ORDER BY `lang`) as url FROM tab2) t1
SET tab2.`url` = t1.`url`
SELECT * FROM tab2
d | lang | url-: |——:|:------1 | 1 | cat-url1 | 2 | cat-url1 | 2 | cat-url2 | 1 | cat-url2 | 2 | cat-url

db<此处小提琴>

相关内容

  • 没有找到相关文章

最新更新