在phpmyadmin中执行'if'语句

1l5u6lss  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(291)

我对使用phpmyadmin还不熟悉。到目前为止,我习惯于在mysql中创建基本的原始查询。我尝试通过phpmyadmin的gui执行这个简单的查询:
(所有以小写字母开头的列名都是gui中定义的参数)

if((Select COUNT(*) from Reviews where ReviewID=reviewID AND UserID=userID) > 0) 
 THEN
  Insert Into reviews(ReviewID, UserID, OrganizationID, ReviewText, ReviewMediaURLs, ReviewRating) 
  Values(reviewID, userID, organizationID, reviewText, reviewMediaURLs, reviewRating) ON DUPLICATE 
  KEY UPDATE ReviewText=reviewText, ReviewMediaURLs=reviewMediaUrls, ReviewRating=reviewRating
END IF

它抛出了一个错误 The following query has failed to execute . 现在,我对mysql和phpmyadmin都是新手,所以我很难确定phpmyadmin是用这种方式处理查询的,还是我的查询实际上是错的。
如果有人能指出错误,将不胜感激。
编辑
到目前为止正确执行的语句是:

Insert Into reviews(ReviewID, UserID, OrganizationID, ReviewText, 
 ReviewMediaURLs, ReviewRating) Values(reviewID, userID, organizationID, 
 reviewText, reviewMediaURLs, reviewRating) ON DUPLICATE KEY UPDATE ReviewID=reviewID, ReviewText=reviewText, ReviewMediaURLs=reviewMediaUrls, ReviewRating=reviewRating
nmpmafwu

nmpmafwu1#

这样的if-then构造,只适用于存储过程和函数。
对于普通查询:

SELECT IF(EXISTS(Select 1 from Reviews where ReviewID=reviewID AND UserID=userID)
, @sql:=' Insert Into reviews(ReviewID, UserID, OrganizationID, ReviewText, ReviewMediaURLs, ReviewRating) 
  Values(reviewID, userID, organizationID, reviewText, reviewMediaURLs, reviewRating) ON DUPLICATE 
  KEY UPDATE ReviewText=reviewText, ReviewMediaURLs=reviewMediaUrls, ReviewRating=reviewRating',@sql:='SELECT 1=1');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

select决定设置哪个@sql。
剩下的是一个execute语句

相关问题