mysql_联合查询union和union all 应用

34 篇文章 1 订阅

一、用于表格转换

目前我的理解时,如果想要将多列表竖着揪下去,一行变多行。那此时需要重新查询整个表,并添加新列,你看新列中内容的添加方法和原列中内容加入新列的方法如下

原表如下

请你重构 Products 表,查询每个产品在不同商店的价格,使得输出的格式变为(product_id, store, price) 。如果这一产品在商店里没有出售,则不输出这一行。

输出结果表中的顺序不作要求。

查询输出格式请参考下面示例。

 

Products table:
+------------+--------+--------+--------+
| product_id | store1 | store2 | store3 |
+------------+--------+--------+--------+
| 0          | 95     | 100    | 105    |
| 1          | 70     | null   | 80     |
+------------+--------+--------+--------+

Result table:
+------------+--------+-------+
| product_id | store  | price |
+------------+--------+-------+
| 0          | store1 | 95    |
| 0          | store2 | 100   |
| 0          | store3 | 105   |
| 1          | store1 | 70    |
| 1          | store3 | 80    |
+------------+--------+-------+

产品0在store1,store2,store3的价格分别为95,100,105。
产品1在store1,store3的价格分别为70,80。在store2无法买到。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rearrange-products-table
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、根据不同条件进行筛选,然后将两个表上下连在一起,上边条件一筛选出来的,下边是条件二筛选出来的。但是这中方法比较耗时。在进行不同条件的筛选的时候可用右侧法2替代

原表如下:

一个员工可以属于多个部门。

当一个员工加入超过一个部门的时候,他需要决定哪个部门是他的直属部门。

请注意,当员工只加入一个部门的时候,那这个部门将默认为他的直属部门,虽然表记录的值为'N'.

请编写一段SQL,查出员工所属的直属部门。

返回结果没有顺序要求。

 

示例:

Employee table:
+-------------+---------------+--------------+
| employee_id | department_id | primary_flag |
+-------------+---------------+--------------+
| 1           | 1             | N            |
| 2           | 1             | Y            |
| 2           | 2             | N            |
| 3           | 3             | N            |
| 4           | 2             | N            |
| 4           | 3             | Y            |
| 4           | 4             | N            |
+-------------+---------------+--------------+

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/primary-department-for-each-employee
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值