一、SQL答题

方式一:通过表连接成一个新表,再从中取字段

SELECT
t1.device_id,
question_id,
result
FROM
question_practice_detail t1
inner JOIN user_profile t2
ON t1.device_id=t2.device_id
where
university='浙江大学'

方式二:通过限制where语句,得到相关数据字段

SELECT
device_id,
question_id,
result

FROM
question_practice_detail 

WHERE
device_id in(
select 
device_id
from
user_profile
where university='浙江大学')

二、解题思路&补充知识

2.1表的用法

表取并集:union

举例:

a表有goods_name,goods_type,goods_price

b表有goods_name,goods_type,goods_time

现在想把a,b表中的所有商品名字和类型取出来

select
goods_name,goods_type
from a
union
goods_name,goods_type
from b
注意点

1.作为取并集的运算,列数和列类型必须一致;

2.order by语句只能在最后使用一次

3.union通常会除去重复的记录(如果想保留重复行,加all就可以,union all)

如果表1是3列,表2是2列,则无法使用union(加法运算)

如果表1和表2相同位置上,相同列数的数据类型并不一致(日期类型和数值类型),则会发生错误

表取交集:intersect(注意点和union一样)
表取差集:except(从a表-b表,如果调换位置,则结果会不一样)

2.2表联结

表连接: 内联结inner join,外联结outer join,交叉联结cross join,左联结:left join,右联结:right join,联结:join