当有两个表时,限制如何工作?

时间:2016-05-02 12:12:47

标签: 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限制了哪个表的结果?一般来说它是如何工作的?

1 个答案:

答案 0 :(得分:3)

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;