【发布时间】:2014-05-24 13:52:35
【问题描述】:
在问这个问题之前,我已经在 Google 和 StockOverflow 上搜索了很多条目。没有什么能满足我的问题。
有两个表 - group_sale_bonuses 和 members。我想检查group_sale_bonuses中是否已经有product_id "1"的记录。
如果没有,我想将members 表中的所有记录插入group_sale_bonuses 和product_id "1"。
我的总体要求如下:
IF ((Select count(id) from group_sale_bonuses where product_id = 1) = 0) THEN
INSERT INTO group_sale_bonuses (member_id, product_id, quantity_counter, credit)
SELECT id, 1, 0, 0 FROM members
END IF
但是这个 sql 会导致错误。
我知道有关于Insert Ignore、Where Not Exists的解决方案。
但是这些条件检查是基于每条记录的。我在members 表中有数千条记录。我想像上面的 sql 示例一样只进行一次条件检查。
顺便说一句,我将在Php Web 应用程序中使用这个Sql。
【问题讨论】:
-
您遇到了哪个错误?
-
@user790454 错误是 - #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'IF ((Select count(id) from group_sale_bonuses where product_id = 1) = 0) THEN' 附近使用正确的语法
-
我不认为你可以在查询中直接使用这样的 IF 语句,至少我在谷歌上找不到任何关于此的内容。我认为你应该用你的网络应用程序来代替。我知道的唯一 if 语句是 if(condition, thenthis, elsethis)
-
您可以使用例程,但这对您的情况不利。
-
@BenBeri 我知道我可以在我的 Web 应用程序中检查这个条件,然后,只需对数据库进行两次触摸。但我只想知道是否只有在Sql中才有解决方案。