【问题标题】:PHP SQL IF NOT EXISTS won't workPHP SQL IF NOT EXISTS 将不起作用
【发布时间】:2016-11-23 01:09:57
【问题描述】:

我有一个关于 SQL (php) 的问题,我想在我的表中插入数据。但我想使用 IF NOT EXIST 值。 我试过的:

INSERT INTO vrienden (id, userid, vriendmetid, accepted) VALUES (null, '1', '20', '0') WHERE NOT EXISTS (SELECT * FROM vrienden WHERE userid='1' AND vriendmetid='20')

我不确定出了什么问题,因为我收到以下错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'WHERE NOT EXISTS (SELECT * FROM vrienden WHERE userid='1' AND vriendmetid='20')' 附近使用正确的语法

谢谢。

【问题讨论】:

  • INSERT 没有WHERE
  • 只需给你的表添加一个唯一键,尝试插入,然后等着看是否插入失败。

标签: mysql


【解决方案1】:

你想要insert . . . select,而不是insert . . . values

INSERT INTO vrienden (id, userid, vriendmetid, accepted) 
     SELECT x.*
     FROM (select null as id, '1' as userid, '20' as vriendmetid, '0' as accepted) x
     WHERE NOT EXISTS (SELECT 1 FROM vrienden v WHERE v.userid = x.userid AND v.vriendmetid = x.vriendmetid);

但是,您可能不应该在INSERT 中这样做。相反,创建一个唯一的索引/约束:

create unique index unq_vrienden_userid_vriendmetid on vrienden(userid, vriendmetid);

这样,数据库将确保列的唯一性,因此您的应用程序不必这样做。

【讨论】:

    猜你喜欢
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多