1

首先这是我的桌子

CREATE TABLE IF NOT EXISTS `group` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(255) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `member` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `group_id` int(11) unsigned NOT NULL,
    `code` int(11) NOT NULL,
    `name` varchar(255) NOT NULL,
    PRIMARY KEY (`id`),
    KEY `group_id` (`group_id`),
    FOREIGN KEY (`group_id`) REFERENCES `group` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我需要member.id看起来像 001、002、003. . 我关注lpad(id, 3, 0)并结案

但是如何将 001、002、003 重新设置回 001 有不同的地方group_id

此查询的结果为 01-001、01-002、02-003、03-004 ( group.id- member.id)

SELECT CONCAT(lpad(g.id, 2, 0),'-',lpad(m.id, 3, 0)) AS id, m.name
FROM member m
LEFT JOIN group g ON g.id = m.group_id
ORDER BY m.id ASC

请帮忙,我需要 01-001、01-002、02-001、03-001 ( group.id- member.id)

或者我可以使用触发器member.code在插入 01-001、01-002、02-003、03-004 时自动生成group.id-member.id

4

0 回答 0