【问题标题】:MySQL "IF NOT EXISTS" [duplicate]MySQL“如果不存在”[重复]
【发布时间】:2018-02-15 19:30:25
【问题描述】:

我的 SQL 语法有错误,但我没有看到。

$query        = "IF NOT EXISTS ( SELECT id FROM Provider 
                 WHERE name=('$filename') )
                 INSERT INTO Provider (Name) VALUES ('$filename')";

$query_result = mysqli_query($connect, $query);

代码

INSERT INTO Provider (Name) VALUES ('$filename')

如果我只使用它就可以正常工作。

还有代码

SELECT id FROM Provider WHERE name=('$filename')

当我测试它的价值时工作得很好

当我添加 IF NOT EXISTS 时,我有 SQL 语法错误,但我看不到它! 有什么想法吗?

【问题讨论】:

  • 你有语法错误,因为你根本做不到。
  • 什么“如果不存在”适合你?

标签: php mysql


【解决方案1】:

您不能在这种情况下使用NOT EXISTS。请尝试以下查询:

INSERT INTO Provider (Name) 
SELECT filename
FROM (SELECT ('$filename') AS filename) AS t
WHERE NOT EXISTS (SELECT id 
                  FROM Provider 
                  WHERE name=('$filename') 

【讨论】:

  • 我有逻辑错误。我现在明白了,实际上我不需要选择 id。我有表Providers,文件名是provider name,我只想检查这个名字是否已经在表中,如果没有,则放入记录,如果没有,就跳过。就我而言,我想询问表中是否已经存在文件名。
  • NOT EXISTS 运算符的SELECT 子句的字段,在这种情况下id 不起作用。你可以改用SELECT 1
猜你喜欢
  • 2013-12-22
  • 1970-01-01
  • 2018-07-03
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多