我正在使用MYSQL脚本,我想在表格中插入一些值。
INSERT INTO `testType` (`name`) VALUES ('URL');
INSERT INTO `testType` (`name`) VALUES ('xD');
INSERT INTO `testType` (`name`) VALUES ('LOL');
但是我只想在表格首先为空时插入。
我不是一个SQL人,但基本上是
if(testType.length() == 0 {
INSERT INTO `testType` (`name`) VALUES ('URL');
INSERT INTO `testType` (`name`) VALUES ('xD');
INSERT INTO `testType` (`name`) VALUES ('LOL');
}
我怎样才能以最简单最小的方式做到这一点?谢谢。
编辑:我的问题不同。如果表格为空,我想插入所有数据。当时不仅只有一个插页答案 0 :(得分:1)
首先,我建议一步到位:
INSERT INTO testType(name)
VALUES ('URL'), ('xD'), ('LOL');
然后,您可以在没有IF
:
INSERT INTO testType(name)
SELECT t.name
FROM (SELECT 'URL' as name UNION ALL
SELECT 'xD' as name UNION ALL
SELECT 'LOL' as name
) t
WHERE NOT EXISTS (SELECT 1 FROM testType);
最后,如果要在每个不存在的情况下插入这些值,那么您可以让数据库完成工作。首先,在name
上定义唯一约束/索引(如果名称不是主键),然后使用ON DUPLICATE KEY UPDATE
:
CREATE UNIQUE INDEX unq_testtable_name ON testtable(name);
INSERT INTO testType(name)
VALUES ('URL'), ('xD'), ('LOL')
ON DUPLICATE KEY UPDATE name = VALUES(name);
答案 1 :(得分:0)
试试这个:
DECLARE @ExistCount INT;
SET @ExistCount = (SELECT COUNT(1) FROM `testType`);
IF @ExistCount<1
THEN
INSERT INTO `testType` (`name`) VALUES ('URL'),('xD'),('LOL');
END IF;
答案 2 :(得分:0)
您可以使用存储过程
DELIMITER //
CREATE PROCEDURE `proc1` ()
BEGIN
SELECT COUNT(*) INTO variable1 FROM testType;
IF variable1 = 0 THEN
INSERT INTO `testType` (`name`) VALUES ('URL');
INSERT INTO `testType` (`name`) VALUES ('xD');
INSERT INTO `testType` (`name`) VALUES ('LOL');
END WHILE;
END //