尝试检查名称是否存在(在另一张表中),并一步添加到插入查询中。我发现如果提交的empNum不在User数据库中,则查询错误:列'lastName'不能为null。是否可以在子查询中使用if语句,如下所示?

INSERT INTO Password_Reset (empNum, lastName, fromIP, dateReset)
    VALUES (34567,
    IF(SELECT COUNT(*) FROM User WHERE empNum = 34567, SELECT lastName FROM User WHERE empNum = 34567, '---'),
    '192.168.1.1',
    NOW())

最佳答案

您的子查询应该在括号中:

IF( (SELECT COUNT(*) FROM User WHERE empNum = 34567),
    (SELECT lastName FROM User WHERE empNum = 34567),
 '---'),


您可以通过许多其他方法来完成与别人已经提到的相同的操作,但是您的版本在添加必需的“()”之后也可以使用。

关于mysql - 可以在mysql子查询中使用IF吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13823834/

10-12 07:22