gpt4 book ai didi

mysql - 如何使用 MySQL if 语句作为列名?

转载 作者:行者123 更新时间:2023-11-30 22:06:18 25 4
gpt4 key购买 nike

我有 table :

mysql> DESCRIBE swaps;
+-------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user1_id | int(11) | NO | | NULL | |
| user2_id | int(11) | NO | | NULL | |
| hasto | int(11) | NO | | NULL | |
| requested | datetime | NO | | NULL | |
| accepted | datetime | YES | | NULL | |
| swapped1 | datetime | YES | | NULL | |
| swapped2 | datetime | YES | | NULL | |
| rejected | datetime | YES | | NULL | |
| rejected_by | int(11) | YES | | NULL | |
+-------------+----------+------+-----+---------+----------------+

其中 user1_id 和 user2_id 代表正在交换的用户,swapped1/swapped2 代表他们确认交换的时间。我需要创建一种机制来在双方确认交换后关闭交换。

我需要这样的东西:

UPDATE swaps SET if(user1_id = ?, swapped1, swapped2) = ? WHERE id=?

在哪里? marks代表当前用户,当前时间,swap_id。我想要的是,如果当前用户是 user1,则将时间插入 swapped1,如果当前用户是 user2,则将时间插入 swapped2。

运行这个查询我得到错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'if(user1_id = '3', swapped1, swapped2) = '2017-01-13 07:34:08' WHERE id='3'' at line 1

什么意思是我没有正确使用 if 语句。有没有办法对列名执行 if 语句?

最佳答案

您不能在赋值的左侧使用 IF,但您可以有条件地更新两列:

UPDATE swaps
SET swapped1 = IF(user1_id = [current_user], [current_time], swapped1)
, swapped2 = IF(user2_id = [current_user], [current_time], swapped2)
WHERE id = [swap_id];

关于mysql - 如何使用 MySQL if 语句作为列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41629544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com