2016-05-02 34 views
0

我有這個疑問:有兩張桌子時限制的工作方式如何?

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

使用'JOIN'而不是舊的,逗號分隔的語法。 –

+1

無論如何,極限被應用於選擇結果 – scaisEdge

+0

@StanislovasKalašnikovas'','逗號分隔符有什麼問題?我也不知道在這種情況下我應該使用'LEFT'還是'INNER'加入。 – stack

回答

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; 
+0

太遲了......我只是補充說'LIMIT'會影響'SELECT'的輸出,而不關心你選擇什麼。 – Preuk