mysql 每个派生表必须有自己的 DELETE 查询别名

标签 mysql

我找到了一个答案,但它指的是 SELECT 而不是 DELETE,我不确定如何在这种情况下实现给定的答案。

通过下面的查询,我想删除除最后 10 个最新值(由 id_lv 定义)之外的所有值,但仅限一个用户。

DELETE FROM last_viewed
  WHERE id_lv <= (
    SELECT id_lv
    FROM (
      SELECT id_lv
      FROM last_viewed
      WHERE user_id_lv = '$user_id'
      ORDER BY id_lv DESC
      LIMIT 1 OFFSET 10
    )
  )

当我运行它时,我得到每个派生表必须有自己的别名

最佳答案

您必须在 DELETE 语句的子查询使用的派生表中使用别名:

DELETE FROM last_viewed
  WHERE id_lv <= (
    SELECT id_lv
    FROM (
      SELECT id_lv
      FROM last_viewed
      WHERE user_id_lv = '$user_id'
      ORDER BY id_lv DESC
      LIMIT 1 OFFSET 10
    ) AS t -- You need an alias here
  )

关于mysql 每个派生表必须有自己的 DELETE 查询别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37775836/

相关文章:

MySQL 与 JOIN 查询

php - 验证 2 个值以确定 "Yes"或 "No"

php - 使用 javascript Ajax 而不是 jQuery 将复选框值发送到 PHP 页面

php - 如何使用 jsonOject 解析多行

php - 无法使用 mysql 和 php 从我的数据库读取第一行

mysql - DashDB 到 MySQL 迁移

PHP PDO 查询执行不保存传递的数据

c# 自动将 am/pm 添加到我的(字符串)日期值

javascript - 如何使用PHP在mysql数据库中动态添加html表数据?

mysql - 一组中的第二个查询不返回结果