MySql select 语句有效但不能删除

标签 mysql select where-clause sql-delete subquery

SET @UserID_In = 1;
Select * FROM EarnedTransaction AS ETMain WHERE ETMain.UserID = @UserID_In
  AND ETMain.ID = ( SELECT MAX(ID) FROM EarnedTransaction AS ETSub WHERE ETSub.UserID = 
    ETMain.UserID AND ETSub.TransactionType = 'Buying' AND ETSub.CompleteDate IS NULL )
  AND ETMain.ID = ( SELECT MAX(ID) FROM EarnedTransaction AS ETSub WHERE ETSub.UserID =             
    ETMain.UserID );

返回 34 ​​15 购买 1500 1428101231 1 2014-09-29 10:09:55

但是:

SET @UserID_In = 1;
Delete FROM EarnedTransaction AS ETMain WHERE ETMain.UserID = @UserID_In
   AND ETMain.ID = ( SELECT MAX(ID) FROM EarnedTransaction AS ETSub WHERE ETSub.UserID = 
       ETMain.UserID AND ETSub.TransactionType = 'Buying' AND ETSub.CompleteDate IS NULL )
   AND ETMain.ID = ( SELECT MAX(ID) FROM EarnedTransaction AS ETSub WHERE ETSub.UserID =                   
       ETMain.UserID );

返回: [Err] 1064 - 您的 SQL 语法有错误; 请查看与您的 MySQL 服务器版本相对应的手册,了解在 AS ETMain WHERE ETMain.UserID = @UserID_In 附近使用的正确语法 AND ETMain.ID = ( SELECT MAX(ID) 在第 1 行

最佳答案

试试这个删除查询(没有“删除表”的别名):

SET @UserID_In = 1;
DELETE FROM EarnedTransaction 
      WHERE UserID = @UserID_In
        AND ID = (SELECT MAX(ID) 
                    FROM EarnedTransaction AS ETSub 
                   WHERE ETSub.UserID = UserID 
                     AND ETSub.TransactionType = 'Buying' 
                     AND ETSub.CompleteDate IS NULL)
        AND ID = (SELECT MAX(ID) 
                    FROM EarnedTransaction AS ETSub 
                   WHERE ETSub.UserID = UserID );

关于MySql select 语句有效但不能删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26096456/

相关文章:

php - 如何从 csv 字符串创建数组?

mysql - 一行中一对多所有详细信息的 SELECT 语句

mysql - 使用 REGEXP 进行 ZF2 查询

php - mysql选择日期之间

java - 为什么这不起作用? Java MySQL

mysql - 使用纯 SQL 查询找出表中的值何时保持不变,无需任何过程或函数

mysql - 根据当前表和每个单独的行向 SQL SELECT 查询输出添加额外的列

mysql - 一个字段上的 WHERE 子句

Mysql Where ... In ... AND where ... in ... 应该只匹配相同的索引

mysql - 使用外键创建 mysql 表时出错