2017-08-10 183 views
0

執行查詢時遇到問題。我有一個看起來像這樣兩個SQL查詢:如果另一個select語句符合條件,則包含執行sql查詢的條件

SELECT COUNT(clients_id) FROM users_clients WHERE users_id = 'sample'; 

而且

SELECT name FROM clients JOIN users_clients ON clients.client_id = users_clients.clients_id WHERE users_clients.users_id = 123456; 

我需要執行第二個SQL語句如果第一個等於或大於1。我可以在短短執行此查詢一個聲明?

回答

0

可能:

SELECT .... second_query 
WHERE 
    ..... 
    AND (
     SELECT COUNT(clients_id) FROM users_clients WHERE users_id = 'sample' 
    ) > 1 

如果子查詢< = 1的結果,那麼整個查詢將返回任何行。事實上,MySql根本不會運行主要(第二個)查詢。

+0

哦,上帝。那很簡單。真的非常感謝你krokodilko。 – zagk

0

你可以使用存在

SELECT name 
    FROM clients 
    JOIN users_clients ON clients.client_id = users_clients.clients_id 
    WHERE users_clients.users_id = 123456 
    and exists(
    SELECT COUNT(clients_id) 
    FROM users_clients 
    WHERE users_id = 'sample' 
    ) 
    ; 
0
SELECT name 
FROM clients 
JOIN users_clients 
ON clients.client_id = users_clients.clients_id 
WHERE users_clients.users_id = 123456 
AND (SELECT COUNT(clients_id) FROM users_clients WHERE users_id = 'sample') > 1 
+0

雖然這個答案可能會有所幫助,但如果你能解釋_how_它的作用會更好,以幫助OP在下次由她/他自己理解和使用構造 –