mysql - 有两个表时限制如何工作?

标签 mysql sql

我有这个问题:

INSERT INTO Votes (id_post,id_user)
SELECT ?,?
    FROM Posts p, Users u
  WHERE p.id_user = :author_id
         AND u.id = $_SESSION['id']
         AND u.active = 1
  limit 1;

如您所见,有两个表PostsUsers。现在我想知道,那个limit 1限制了哪个表的结果?一般如何运作?

最佳答案

LIMIT 作用于查询的结果,而不作用于单个表。

您应该学会使用正确的 JOIN 语法。我想它是这样的:

SELECT ?, ?
FROM Posts p JOIN
     Users u
     ON p.id_user = u.id
WHERE p.id_user = :author_id AND
      u.id = $_SESSION['id'] AND
      u.active = 1
LIMIT 1;

话虽如此,SELECT ?, ? 确实没有意义。您只能插入常量 作为参数。您可能应该有明确的列名,也许:

SELECT p.id, u.id
FROM Posts p JOIN
     Users u
     ON p.id_user = u.id
WHERE p.id_user = :author_id AND
      u.id = $_SESSION['id'] AND
      u.active = 1
LIMIT 1;

关于mysql - 有两个表时限制如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36982165/

相关文章:

mysql - 表引用的顺序在 MySQL 中重要吗?

MySql 错误 1045 (28000) : Access denied for user 'root' @'localhost' (using password: NO)

php&mysql fopen无法打开文件

php - 多对多 Doctrine : count left join collection

mysql - 如何将 richtextbox 文本保存到 mysql 数据库并进行格式化(粗体、斜体...)并在代码中检索此文本

php - 同时向 PostgreSQL 和 MySQL 插入相同的数据

mySQL 在具有有效语法的子查询上给出语法错误

sql - 查询输出表中不存在的值

mysql - 如何解决基于运行ac_principal的运行principal问题?

窗口函数的 SQL 条件