MySQL concat関数を使用したスプライスフィールド

1683 ワード

前言
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