我有这个问题:
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
限制了哪个表的结果?一般来说它是如何工作的?
答案 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;