MySQL if()with select语句

时间:2015-10-24 15:33:17

标签: mysql sql

我不知道我在这里失踪了什么:

IF (SELECT 'Nazwa' FROM stanowiska WHERE Nazwa LIKE = 'Lakiernik') IS NULL THEN  
INSERT INTO stanowiska (Nazwa) VALUES ('Lakiernik')
ELSE   
SELECT Nazwa FROM stanowiska WHERE Nazwa LIKE 'Lakiernik'

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:3)

这可能是你想要的:

IF NOT EXISTS (SELECT 1 FROM stanowiska WHERE Nazwa = 'Lakiernik') THEN  
    INSERT INTO stanowiska (Nazwa)
        VALUES ('Lakiernik');
ELSE SELECT Nazwa FROM stanowiska WHERE Nazwa = 'Lakiernik'
END IF;

即使这很奇怪。代码块插入THEN并返回ELSE中的值。这似乎不对。并且,返回的部分仅为Lakiernik,因此我认为不需要ELSE

IF NOT EXISTS (SELECT 1 FROM stanowiska WHERE Nazwa = 'Lakiernik') THEN  
    INSERT INTO stanowiska (Nazwa)
        VALUES ('Lakiernik');
END IF;

然而,这有竞争条件。所以,如果你想防止重复,正确的方法是:

create unique index unq_stanowiska_nazwa on stanowiska(nazwa);

然后:

    INSERT INTO stanowiska (Nazwa)
        VALUES ('Lakiernik')
        ON DUPLICATE KEY UPDATE nazwa = VALUES(Nazwa);

答案 1 :(得分:0)

试试这个,还没有测试它:

IF (SELECT 1 FROM stanowiska WHERE Nazwa = 'Lakiernik') 
THEN  
INSERT INTO stanowiska (Nazwa) VALUES ('Lakiernik');
ELSE   
SELECT Nazwa FROM stanowiska WHERE Nazwa ='Lakiernik';
END IF;