0

这是我的查询,我已经知道这个问题,但我不知道如何解决它:

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

所以,这是我有时得到的错误:

子查询返回超过 1 行

我看到问题是,如果mac地址注册了多次,会给我一个以上的用户ID,而当我们要选择信息的时候,我的用户ID太多,无法生成表格。你们能帮我看看我该如何解决这个问题吗?

4

2 回答 2

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其他答案中建议的查询类型。

于 2013-05-01T18:52:52.060 回答
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)"
于 2013-05-01T18:52:27.533 回答