一个外键对应多个不同的表的提问。 对于楼主的可能1:使用一个“type”,值为0、1,0表示来自Customer,1表示来自Admin,连接条件还是一样,可以在where条件加上: and Comment.type=0 (根据你自己需要取哪个)对于楼主的可能2:可以给默认值呀,比如:数值型就可以默认为零,字符串类型可以默认为空 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 方案1语句 : select * from comment left join client on client.id = comment.commenter_id and comment.commenter_table = 'client' left join admin on admin.id = comment.commenter_id and comment.commenter_table = 'admin';你是指这样吗?这2个方案是否算是最佳方案呢? 方案1比较利于扩展,比方案2好,现在就两种身份,如果有十种身份,方案2就得有十个相应字段。你可以尝试用union all将两种类型分开查询,减少无用的联表查询。最佳方案就要看你的具体需求了,你的方案1比较适用于大多数情况。 2.ID | message | user_id | rolerole --> (admin, customer) . 简单的SQL并列排名,为何这么多人做错?无语:散分 mysql下怎么创建这样一个视图 获得所取时间的当月最后一天 MYSQL数据的检索效率 求一sql语句,高手请帮忙。 如何监测MYSQL心跳? 表中很多字段,如何检索不包含某列 MYSQL 查询语句求助 求助,遍历表根据条件case后修改某字段的数据~求问题。。谢谢大神 ubuntu14.04 下 mysql -uroot -p 输入密码后报错 mysql 字段合并 求教一个group by的组内排序的问题
select * from comment left join client on client.id = comment.commenter_id and comment.commenter_table = 'client'
left join admin on admin.id = comment.commenter_id and comment.commenter_table = 'admin';
你是指这样吗?这2个方案是否算是最佳方案呢?
你可以尝试用union all将两种类型分开查询,减少无用的联表查询。
最佳方案就要看你的具体需求了,你的方案1比较适用于大多数情况。