4

我有一个现有的数据库和一个现有的表,在该表中我有一个名为“packageno”的列,它代表包裹编号。我有超过 400 行的数据库内容。每个唯一行都有一个包裹编号。但是现在,我添加了一个名为“packagedescription”的列,它代表包描述。现在新列是空的。但是我有一个关于 PHP 代码中包描述的图例,例如:

if ($packageno == 1) {
 $description = 'Interior Rooms';
 }
if (packageno == 2) { 
 $description = 'Exterior Rooms';
 }

ETC....

但是从一开始,我就没有添加描述。相反,我添加了包裹号。

所以,我想做的是更新或设置 packagedescription 列中的那些空数据库字段,以及包的实际描述。如何使用 packageno 编写 MySQL 脚本来输入所有现有行的描述?

我知道一点 MySQL,但我从来没有对现有的行做过这样的事情。

任何帮助,将不胜感激!

4

3 回答 3

7

您也可以在一个查询中执行此操作:

UPDATE `table_name` SET packagedescription = 
    IF(packageno = 1, 'Interior Rooms',
    IF(packageno = 2, 'Exterior Rooms',
    IF(packageno = 3, 'Some Rooms',
    IF(packageno = 4, 'Other Rooms',
    IF(packageno = 5, 'Outdoor Rooms',
    IF(packageno = 6, 'Indoor Rooms',
    IF(packageno = 7, 'Commercial Rooms',
    IF(packageno = 8, 'Residential Rooms',
    IF(packageno = 9, 'Industrial Rooms',
    IF(packageno = 10, 'Kitchen Rooms',
    IF(packageno = 11, 'Office Rooms',
    IF(packageno = 12, 'Bedrooms', NULL))))))))))))

您还可以创建一个 PackageNumberDescription 表并从中进行更新,如下所示:

PackageNo  PackageDescription
---------  ------------------
1          Interior Rooms
2          Exterior Rooms

UPDATE packages p JOIN PackageNumberDescription d on p.packageno = d.packageno SET p.packagedescription = d.packagedescription
于 2013-06-23T04:55:45.237 回答
4

如果您有少量 id,您可以执行以下操作:

UPDATE package SET description = 'Interior Rooms' WHERE packageNo = 1;
UPDATE package SET description = 'Exterior Rooms' WHERE packageNo = 2;

如果你有数百或数千,可能会有点烦人。

或者,您可以有一个单独的表,而不是重复描述,其中包含描述并链接到它。

PackageID    Description
---------    --------------
1            Interior Rooms
2            Exterior Rooms

然后您可以更改您的选择以包含另一个表:

SELECT * FROM package p INNER JOIN packageRooms pr ON p.packageID = pr.packageID
于 2013-06-23T04:50:26.890 回答
1

update查询将是

UPDATE table_name SET packagedescription = 'Interior Rooms' 
WHERE packageno = 1

UPDATE table_name SET packagedescription = 'Exterior Rooms' 
WHERE packageno = 2

对其他人也一样......

于 2013-06-23T04:49:04.743 回答