2013-05-01 77 views
0

這是我的查詢,我已經知道這個問題,但我沒有關於如何解決這個問題的想法:關於查詢和子查詢

$queryString = "SELECT * FROM `users_list` "WHERE `user_id` like (SELECT `user_id` FROM `equipments_list` WHERE `equipment_mac` like '%$searchStringMacRevised%')" 

所以,這是錯誤有時我得到:

子查詢返回多個1行

我看到的問題是,如果MAC地址被註冊不止一次,它會給我一個以上的用戶ID,當我們要選擇inf ormation,我有太多的用戶ID來生成表。你們能幫我看看我該如何解決這個問題?

回答

0

這意味着你的inner select正在恢復多個行,應該正是爲了返回1行的外部查詢

$queryString = "SELECT * FROM `users_list` "WHERE `user_id` like (SELECT `user_id` FROM `equipments_list` WHERE `equipment_mac` like '%$searchStringMacRevised%' LIMIT 1)" 
+0

它有效,但它只給我第一個記錄。我怎樣才能讓它給我所有的記錄? – jjumar 2013-05-03 15:35:21

3

賽會紀錄既然你只是比較用戶ID直接,你可以使用一個IN條款,如

SELECT * FROM users_list 
WHERE user_id IN 
    (SELECT user_id FROM equipments_list 
    WHERE equipment_mac like '%$searchStringMacRevised%') 

這將使你可能比較多個用戶ID。

如果我們只想要1個用戶ID,那麼您可能需要使用其他答案中建議的LIMIT類型的查詢。

+0

它的作品,但它只給我第一個記錄。我怎樣才能讓它給我所有的記錄? – jjumar 2013-05-03 15:31:40