连接查询:select table_b.type,table_b.title,table_b.content,table_b.author from table_a left join table_b on table_a.type = table_b.type where table_a.id = 1;
子查询: select type,title,content,author from table_b WHERE type = (SELECT type from table_a WHERE id = 1);
如果一个id对应多个type,则用 select type,title,content,author from table_b WHERE type in (SELECT type from table_a WHERE id = 1);
结果如下:
采用最普通的查询(不采用关系表或中间表的形式),也可以得到相同的效果,如下:
SELECT * from table_b WHERE type = 'a';
那为什么还要花费如此大的力气去建立一个关系表呢?
这两种方式的不同点在于,第二种直接在详情表中查询所有为a类的记录;而第一种则是通过参数id获取到a类别,再到详情表获取所有a类的记录
我个人认为原因可能有:1、加入关系表或中间表,能让数据间的关系更加明确;2、前端传递过来的是一个id参数,后台只通过此id参数去进行一系列的查询,一定程度上保证了数据的安全性。