MySQL concat関数を使用したスプライスフィールド
1683 ワード
前言
roomテーブルの住所フィールドにはcommunityテーブルのキャンパスアドレスとflatテーブルのドア番号が含まれており、MySQLではconcat関数でこの問題を解決することができます.
インスタンスの再生
communityテーブル
flat表
roomテーブル
SQL要件
自有房源であるcommunityテーブルのセルアドレスとflatテーブルのナンバープレートをroomテーブルの住所列に更新します.
SQL文
roomテーブルの住所フィールドにはcommunityテーブルのキャンパスアドレスとflatテーブルのドア番号が含まれており、MySQLではconcat関数でこの問題を解決することができます.
インスタンスの再生
communityテーブル
CREATE TABLE `community` (
`id` bigint(20) NOT NULL COMMENT ' ',
`name` varchar(50) DEFAULT NULL COMMENT ' ',
`address` varchar(200) DEFAULT NULL COMMENT ' ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=' ';
flat表
CREATE TABLE `flat` (
`id` bigint(20) NOT NULL COMMENT ' ',
`flatsNum` varchar(15) NOT NULL COMMENT ' ',
`communityid` bigint(20) NOT NULL COMMENT ' ID',
`isPrivate` bit(1) DEFAULT NULL COMMENT ' ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=' ';
roomテーブル
CREATE TABLE `room` (
`id` bigint(20) NOT NULL COMMENT ' ',
`roomName` varchar(50) NOT NULL COMMENT ' ',
`flatid` bigint(20) NOT NULL COMMENT ' ID',
`fulladdress` varchar(200) DEFAULT NULL COMMENT ' ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=' ';
SQL要件
自有房源であるcommunityテーブルのセルアドレスとflatテーブルのナンバープレートをroomテーブルの住所列に更新します.
SQL文
UPDATE room,
flat,
community
SET room.fulladdress = concat(community.address , flat.flatsNum)
WHERE
room.flatid = flat.id
AND flat.communityid = community.id AND flat.isPrivate=0