4

既存のテーブルを持つ既存のデータベースがあり、そのテーブルにはパッケージ番号を表す「packageno」という列があります。400 行以上のデータベース コンテンツがあります。各一意の行にはパッケージ番号があります。しかし今、パッケージの説明を表す「packagedescription」という列を追加しました。現在、新しい列は空です。しかし、PHP コードのパッケージの説明には凡例があります。たとえば、次のようになります。

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

等....

しかし、最初から説明を追加しませんでした。代わりに、パッケージ番号を追加しました。

したがって、私がやりたいのは、パッケージの実際の説明を使用して、packagedescription 列の空のデータベース フィールドを UPDATE または SET することです。packageno を使用して、既存のすべての行の説明を入力する MySQL スクリプトを作成するにはどうすればよいですか?

私はMySQLを少し知っていますが、既存の行に対してこのようなことをしたことはありません.

どんな助けでも大歓迎です!

4

3 に答える 3

7

1 つのクエリで実行することもできます。

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 に答える