我可以使用带有select语句的MySQL ifnull吗?

时间:2012-06-21 23:09:31

标签: mysql select ifnull

我正在尝试以下操作,但无法找出问题所在:

IF( IFNULL(
      SELECT * FROM vertreter AS ag 
      WHERE ag.iln = param_loginID 
      AND ag.verkaeufer = param_sellerILN
      ),
      UPDATE vertreter AS agUp
      SET agUp.vertreterkennzeichen
      WHERE agUp.iln = param_loginID AND agUp.verkaeufer = param_sellerILN
      ,
      INSERT INTO vertreter AS agIn
          ( agIn.iln, agIn.verkaeufer, agIn.vertreterkennzeichen, agIn.`status` )
      VALUES
          ( param_loginID, param_sellerILN, param_agentID, 'Angefragt' )
      );

问题:
这是否可行,检查SELECT是否返回NULL,然后执行A或B取决于?

1 个答案:

答案 0 :(得分:1)

您需要创建唯一的复合索引(iln + verkaeufer)

CREATE UNIQUE INDEX vertreter_iln_verkaeufer ON vertreter (iln, verkaeufer)

http://dev.mysql.com/doc/refman/5.0/en/create-index.html

然后你可以在一个查询中执行此操作:

INSERT INTO vertreter
(agIn.iln, agIn.verkaeufer, agIn.vertreterkennzeichen, agIn.`status`)
VALUES (param_loginID, param_sellerILN, param_agentID, 'Angefragt')
ON DUPLICATE KEY UPDATE vertreterkennzeichen = param_agentID

文档:http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html