SQL - 如果没有数据,则插入表中

时间:2018-04-20 10:33:28

标签: mysql sql database

我正在使用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');

}

我怎样才能以最简单最小的方式做到这一点?谢谢。

编辑:我的问题不同。如果表格为空,我想插入所有数据。当时不仅只有一个插页

3 个答案:

答案 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 //