如何将 column = 的所有行更新为 1 以外的值,然后将该行更新为另一个值?
How to update all rows with column = to value except 1, then update that one to another value?
我有一个 MySQL OFFERS table,带有 OID、PID 和 STATUS。 STATUS 有 3 个 ENUM 值。 O A C.(打开、接受、关闭)。它看起来像这样:
+---------+-------------+--------+
| oid | pid | status |
+---------+-------------+--------+
| 1 | 1 | o |
| 2 | 1 | o |
| 3 | 1 | o |
| 4 | 2 | o |
+---------+-------------+--------+
所有报价均已开放。
当用户想要接受报价时,他们单击一个按钮,该按钮将 post ID (PID) 和报价 ID (OID) 发送到 php 文件,该文件对数据库执行 UPDATE 语句。我希望语句将 table 更新为如下所示:
+---------+-------------+--------+
| oid | pid | status |
+---------+-------------+--------+
| 1 | 1 | a |
| 2 | 1 | c |
| 3 | 1 | c |
| 4 | 2 | o |
+---------+-------------+--------+
Psudo-PHP-MySQLI语句:
UPDATE offers
SET status='c'
WHERE pid = $_POST['pid'], except WHERE oid = $_POST['oid']
还有 SET status='a' WHERE oid = $_POST['oid']
我是 PHP 和 MySQLi 的新手,所以我不知道如何构建所有语句。这种说法甚至可能吗?我知道使用准备好的语句,但为了简单起见,我只是在此处添加值。谢谢!
使用CASE
根据条件指定要分配的不同值。
UPDATE offers
SET status =
CASE oid
WHEN $_POST['oid'] THEN 'a'
ELSE 'c'
END
WHERE pid = $_POST['pid']
我有一个 MySQL OFFERS table,带有 OID、PID 和 STATUS。 STATUS 有 3 个 ENUM 值。 O A C.(打开、接受、关闭)。它看起来像这样:
+---------+-------------+--------+
| oid | pid | status |
+---------+-------------+--------+
| 1 | 1 | o |
| 2 | 1 | o |
| 3 | 1 | o |
| 4 | 2 | o |
+---------+-------------+--------+
所有报价均已开放。 当用户想要接受报价时,他们单击一个按钮,该按钮将 post ID (PID) 和报价 ID (OID) 发送到 php 文件,该文件对数据库执行 UPDATE 语句。我希望语句将 table 更新为如下所示:
+---------+-------------+--------+
| oid | pid | status |
+---------+-------------+--------+
| 1 | 1 | a |
| 2 | 1 | c |
| 3 | 1 | c |
| 4 | 2 | o |
+---------+-------------+--------+
Psudo-PHP-MySQLI语句:
UPDATE offers
SET status='c'
WHERE pid = $_POST['pid'], except WHERE oid = $_POST['oid']
还有 SET status='a' WHERE oid = $_POST['oid']
我是 PHP 和 MySQLi 的新手,所以我不知道如何构建所有语句。这种说法甚至可能吗?我知道使用准备好的语句,但为了简单起见,我只是在此处添加值。谢谢!
使用CASE
根据条件指定要分配的不同值。
UPDATE offers
SET status =
CASE oid
WHEN $_POST['oid'] THEN 'a'
ELSE 'c'
END
WHERE pid = $_POST['pid']