mysql数据库查询练习五-【交换工资】【寻找用户推荐人】

1.交换工资

给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求只使用一个更新(Update)语句,并且没有中间的临时表。

注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。

例如:

| id | name | sex | salary |
|----|------|-----|--------|
| 1  | A    | m   | 2500   |
| 2  | B    | f   | 1500   |
| 3  | C    | m   | 5500   |
| 4  | D    | f   | 500    |

运行你所编写的更新语句之后,将会得到以下表:

| id | name | sex | salary |
|----|------|-----|--------|
| 1  | A    | f   | 2500   |
| 2  | B    | m   | 1500   |
| 3  | C    | f   | 5500   |
| 4  | D    | m   | 500    |

1.解答

#这里用到了 SQL 的 IF,这个知识点有点冷,UPDATE 相当于遍历,而可能的值只有两个,因此加个 IF 即可使值互换
UPDATE SALARY
    SET SEX =
    IF(SEX='f','m','f');

3.寻找用户推荐人

给定表 customer ,里面保存了所有客户信息和他们的推荐人。

+------+------+-----------+
| id   | name | referee_id|
+------+------+-----------+
|    1 | Will |      NULL |
|    2 | Jane |      NULL |
|    3 | Alex |         2 |
|    4 | Bill |      NULL |
|    5 | Zack |         1 |
|    6 | Mark |         2 |
+------+------+-----------+

写一个查询语句,返回一个编号列表,列表中编号的推荐人的编号都 不是 2。

对于上面的示例数据,结果为:

+------+
| name |
+------+
| Will |
| Jane |
| Bill |
| Zack |
+------+

4.解答

select name
from customer
where referee_id != 2 or referee_id is NULL
### 回答1: MySQL中的交换运算指的是将两个变量的值进行交换的操作。在MySQL中,可以使用以下语句实现交换运算: SET @a = 1, @b = 2; SELECT @a, @b; SET @a = @a XOR @b, @b = @a XOR @b, @a = @a XOR @b; SELECT @a, @b; 上面的代码中,使用了异或运算来实现变量值的交换,最终输出的结果是@a=2,@b=1。 ### 回答2: 在MySQL中,交换运算是指对于查询结果集中的行进行位置交换,即将某些行的位置互换,可以使用不同的实现方式来实现交换运算。 在MySQL中进行交换运算可以使用ORDER BY子句配合CASE语句来实现。通过在ORDER BY子句中使用CASE语句对需要交换位置的行进行条件判断,并将其排在特定的位置上,从而实现交换位置的效果。 例如,假设有一个员工表employees,包含员工姓名和员工工资两列。现在需要将工资大于10000的员工和工资小于10000的员工互换位置,可以使用以下查询语句实现: SELECT employee_name, employee_salary FROM employees ORDER BY CASE WHEN employee_salary > 10000 THEN 0 ELSE 1 END ASC, employee_salary DESC; 上述查询语句中,先通过CASE语句判断工资是否大于10000,将工资大于10000的员工排在前面,再通过employee_salary进行降序排列,从而实现了工资大于10000的员工和工资小于10000的员工的位置交换交换运算在MySQL中是一种常用的操作方式,可以灵活地运用于需要对查询结果集进行位置调整的场景,实现对数据的自定义排序。 ### 回答3: 在MySQL中的交换运算是指对两个变量或值进行交换的操作。具体来说,在MySQL中可以使用SET语句来实现交换运算。将一个变量的值赋给另一个变量,再将第一个变量的值重新赋给第二个变量,从而实现两个变量的值交换。 例如,假设有两个变量a和b,初始值分别为1和2。要实现交换运算,可以使用以下步骤: 1. 创建一个临时变量temp,用于存储a的值。 2. 将b的值赋给a。 3. 将temp的值赋给b。 经过以上步骤,a的值变为2,b的值变为1,实现了两个变量的值交换。 在实际应用中,交换运算可以在需要交换两个变量的值时使用,例如需要交换两个数的值、需要交换两个变量的引用等。通过交换运算可以方便地实现这些操作,提高了程序的灵活性和效率。 需要注意的是,交换运算在MySQL中是基于这种临时变量的交换方式实现的,而不是使用特定的操作符或函数来实现的。因此,在使用交换运算时,需要事先声明和初始化临时变量,以便实现变量的值交换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值