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
的输出,而不考虑从中选择什么。