まず、これは私のテーブルです
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