我正在将所有旧的 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
我找不到使用相同 IP 地址创建 1 个查询来查找用户的解决方案? 在此先感谢您的帮助!
最佳答案
您可以使用 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
子句并在您的应用程序中循环处理结果而不是循环查询。
关于php - 如何将这两个 MySQL 选择查询合并为一个以防止循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28350289/