如何将这两个MySQL选择查询合并为一个以防止循环


How to combine these 2 MySQL select queries to one to prevent looping?

我正在将所有旧的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地址?提前感谢您的帮助!

您可以使用LEFT OUTER JOIN,在这种情况下,它也是一个"自联接":

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子句并在应用程序中循环结果,而不是循环查询。