我正在设计一个用于获取唯一ID的数据库。通过从其他表中获取id
,“main”表将具有复合主键作为示例,请考虑下表说明问题:
----------------------------------------------------------------
| PK_main_table| FK1 | FK2 | ... |
----------------------------------------------------------------
| 102_245 | 102 | 245 | ... |
| 102_984 | 102 | 984 | ... |
| 98_298 | 98 | 298 | ... |
| 564_114 | 564 | 114 | ... |
----------------------------------------------------------------
所以我将写下以下内容:
CREATE TABLE main_table
(
`id` INT NOT NULL AUTO_INCREMENT,
FK1 int(5),
FK2 int(5),
...
primary key(`FK1`, `_`, `FK2`, ...)
);
请注意,所有外键都有唯一的ID,并且可以多次找到相同的外键(如您所见,FK1 ='102')。
我对关系数据库有一个很好的理解,但远非专家甚至是有经验的用户。
我的问题是:如何获得主键?我希望我可以做一个SELECT [那里],其中FK1 ='98',结果得到'98_298'。
答案 0 :(得分:0)
我的解决方案是添加一个新字段" primary_key"使用以下代码添加带有触发器的填充:
select
id,group_concat(concat(`FK1`,':',`FK2`) separator ',')
as Result from main_table group by id
然后我必须
选择main_table.primary_key,其中[我的条件]
我不知道它是否是最佳解决方案,但它的效果非常好。