这是我的查询,我已经知道了问题,但我对如何解决它并不知情:
$queryString = "SELECT * FROM `users_list` "WHERE `user_id` like (SELECT `user_id` FROM `equipments_list` WHERE `equipment_mac` like '%$searchStringMacRevised%')"
所以,这有时是我得到的错误:
子查询返回超过1行
我看到问题是如果mac地址被多次注册,它会给我多个用户ID,当我们要选择信息时,我有太多的用户ID来生成表。你能帮助我看看我该如何解决这个问题?
答案 0 :(得分: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
类型的查询。
答案 1 :(得分: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)"