Php 如何将这两个MySQL select查询合并为一个查询以防止循环?

Php 如何将这两个MySQL select查询合并为一个查询以防止循环?,php,mysql,pdo,Php,Mysql,Pdo,我正在将所有旧的mysql函数重写为准备好的PDO语句。我还尝试重写所有sql内部循环,使查询变得智能,因此不再需要sql循环。但这一次,我不知道如何做到这一点 用于搜索已用ip地址的简单SQL: SELECT ip FROM log_ip WHERE spelerID = :spelerID 通常,我会对结果执行while循环:对于找到的每个ip地址,我都会执行新的sql搜索,以查找相同ip地址上的其他用户 SELECT spelerID,naam FROM log_ip WHERE ip

我正在将所有旧的mysql函数重写为准备好的PDO语句。我还尝试重写所有sql内部循环,使查询变得智能,因此不再需要sql循环。但这一次,我不知道如何做到这一点

用于搜索已用ip地址的简单SQL:

SELECT ip FROM log_ip WHERE spelerID = :spelerID
通常,我会对结果执行while循环:对于找到的每个ip地址,我都会执行新的sql搜索,以查找相同ip地址上的其他用户

SELECT spelerID,naam FROM log_ip WHERE ip = :ip 
我找不到一个解决方案来创建1个查询,查找用户,使用相同的ip地址? 提前感谢您的帮助

您可以使用左外联接,在本例中,左外联接也是自联接:

SELECT l1.ip, l2.spelerID, l2.naam
FROM log_ip l1
LEFT OUTER JOIN log_ip l2
  ON l2.ip = l1.ip
  AND l2.spelerID <> l1.spelerID
WHERE l1.spelerID = :spelerID
现在,请注意,结果将与您可能习惯的结果略有不同。l1 ip值将重复


您应该调查JOIN子句并在应用程序中循环结果,而不是循环查询。

1052-where子句中的“spelerID”列不明确。在那里我改成了l1.spelerID和…是的。非常感谢你!!也谢谢你的解释。接受您的答案并单击“有用”:再次感谢: