Mysql
這些查詢會返回相同的結果嗎?
我有這個簡單的查詢:
SELECT friend_id FROM default_friend WHERE user_id = 1
結果如下:
+-----------+ | friend_id | +-----------+ | 2250 | | 4901 | | 7187 | | 9337 | | 9843 | +-----------+
現在我有這個查詢太複雜了:
SELECT friend_id, user_id, approved FROM default_friend WHERE user_id = 1 AND (friend_id IN (SELECT friend_id FROM default_friend WHERE user_id = 1)) AND approved = 0
我的問題是:進入第二個查詢的 SELECT 會返回與第一個查詢返回的數據相同的數據嗎?意思是friend_id = 2250, 4901, 7187, 9337, 9843 還是我需要執行第一個並以程式方式拆分結果並建構第二個?另外我想知道哪種方式更合適!
不,您不必執行第一個查詢、獲取結果、動態建構第二個查詢然後執行它。
而且您也不需要這個複雜的第二個查詢。一個簡單的就足夠了:
SELECT friend_id, user_id, approved FROM default_friend WHERE user_id = 1 AND approved = 0 ;
而且您也不需要列表中的the
user_id
和 the 。他們將在所有行中,不是嗎?approved``SELECT``1``0
所以,問題是。你為什麼不只保留原始的第一個查詢,只添加附加條件(
approved = 0
)?:SELECT friend_id FROM default_friend WHERE user_id = 1 AND approved = 0 ;