mysql 帶條件的添加語句


sql格式

字段1和字段2不可重復

INSERT INTO 表1 (字段1,字段2,字段3) SELECT 值1,值2,值3 FROM DUAL WHERE NOT EXISTS (SELECT 任一字段 FROM 表1 WHERE 字段1 = 值1 AND 字段2 = 值2 ) 

sq講解

普通的insert語句

insert into 表名 (字段1,字段2,字段3) values(值1,值2,值3)

等效於

INSERT INTO 表名 (字段1,字段2,字段3) SELECT 值1,值2,值3 FROM DUAL 

select后面就是insert into 語句中的values后面的值;

DUAL(mysql中的關鍵字)是為了方便那些要求所有SELECT語句都應該具有FROM和其他子句的人

其中的 DUAL 是一個臨時表

示例表

保證同一目錄下相同類型的文件(文件夾)不重名

CREATE TABLE `file_disk` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `pid` bigint(20) NOT NULL DEFAULT '0' COMMENT '父級ID',
  `file_name` varchar(125) NOT NULL DEFAULT '' COMMENT '名稱',
  `structure_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '類型 1文件夾 2文件',
  `file_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '0' COMMENT '文件后綴',
  `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否刪除 0否 1是',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=893 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='網盤文件表';
示例語句
INSERT INTO file_disk ( file_name, structure_type, creator_id, file_type ) SELECT '唯一空間',1,1,1 FROM DUAL WHERE NOT EXISTS (SELECT id FROM file_disk WHERE deleted = 0 AND ( file_name = '唯一空間' AND file_type = 1 AND pid = 0 AND structure_type = 1 ) );

參考文檔1: insert時帶有where條件的寫法

參考文檔2: mysql 帶條件的添加語句(insert +where 條件)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM