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

Mysql 当有两个表时,限制如何工作?,mysql,sql,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; 如您所见,有两个表Posts,Users。现在我想知道,limit 1限制了哪个表的结果?通常它是如何工作的?LIMIT对查询结

我有一个疑问:

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;

如您所见,有两个表
Posts
Users
。现在我想知道,
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;

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;

使用
JOIN
而不是旧的逗号分隔语法。无论如何,限制适用于selectresult@StanislovasKalašnikova
逗号分隔符有什么问题?另外,我不知道在这种情况下应该使用
LEFT
还是
internal
联接。隐式逗号分隔联接与现代内部联接相同。@jarlh好的,但请看,这两个表之间没有任何相同的列。所以我不能在
on
子句上写条件。因为没有任何真实的条件。因此,如何使用
JOIN
而不是
?使用
JOIN
而不是旧的逗号分隔语法。无论如何,限制适用于selectresult@StanislovasKalašnikova
逗号分隔符有什么问题?另外,我不知道在这种情况下应该使用
LEFT
还是
internal
联接。隐式逗号分隔联接与现代内部联接相同。@jarlh好的,但请看,这两个表之间没有任何相同的列。所以我不能在
on
子句上写条件。因为没有任何真实的条件。那么我如何使用
JOIN
而不是
?太晚了。。。我只想补充一点,
LIMIT
会影响
SELECT
的输出,而不关心您从中选择什么。太晚了。。。我只想补充一点,
LIMIT
会影响
SELECT
的输出,而不考虑从中选择什么。