我有一个包含现有表的现有数据库,在该表中我有一个名为“packageno”的列,它代表包号。我有超过400行的数据库内容。每个唯一行都有一个包号。但是现在,我添加了一个名为“packagedescription”的列,它代表包描述。现在新列是空的。但是我有一个关于PHP代码中包描述的图例,例如:
if ($packageno == 1) {
$description = 'Interior Rooms';
}
if (packageno == 2) {
$description = 'Exterior Rooms';
}
等...
但是从一开始,我就没有添加说明。相反,我添加了包裹编号。
所以,我想要做的是更新或设置packagedescription列中的空数据库字段,以及包的实际描述。如何使用packageno?
编写MySQL脚本以输入所有现有行的描述我知道一点MySQL,但我从未对现有的行做过这样的事情。
任何帮助将不胜感激!
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分:1)
update
查询将是
UPDATE table_name SET packagedescription = 'Interior Rooms'
WHERE packageno = 1
UPDATE table_name SET packagedescription = 'Exterior Rooms'
WHERE packageno = 2
其他人也一样......