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