有下面两个表
desk表结构
desk_id left_id right_id
1 3 null
2 null 2
3 1 2
user表结构
user_id name
1 小明
2 小红
3. 小丽
left_id 与 user_id 对应
想得到这样一个结果, 把left_id 替换成 white, right_id 替换成 black
desk_id color name
1 white 小丽
2. black 小红
3 white 小明
3. black 小红
我的做法是两条sql语句查询, 然后再把结果合并在一起
select desk_id, white as color, name from desk inner join user on user_id = left_id where left_id is not null;
select desk_id, black as color, name from desk inner join user on user_id = left_id where right_id is not null;
能不能只用一条sql语句得到呢 , 或者还有其它更好的办法 ?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
题目我没细看,如果你的两条select正确,最简单的做法就是,把你上面的两条已经写好的select语句,用union all连接.查一下union all的用法,你就清楚了
最终结果的骨架相当于一次
inner join:我们只要把
left_id、right_id、user_id的各种组合映射到color就行了。也即当user_id = left_id时color=white,否则color=black:这里假定
left和right不会是同一个人(否则结果中只有一行)。