【发布时间】:2026-01-09 19:55:01
【问题描述】:
我有 2 张桌子。在 tableA 中,我将文件名存储在其中一列中。 我还将该文件名存储在 tableB 中。这些文件由登录的用户上传,他们的名称存储在 tableA 中。我真正想做的是从tableA中选择一个随机行,其中文件名不在tableB中,另外从tableA中只选择没有登录用户的用户名的行。
我在下面有这段代码可以工作,但我不知道如何使它从结果中排除具有登录用户用户名的行:
$sql = "SELECT columnA FROM TableA LEFT JOIN tableB on TableA.columnA = tableB.columnB
WHERE tableB.columnB IS NULL ORDER BY RAND() LIMIT 1";
我尝试在 IS NULL AND username != $loggeduser (保存记录的用户名的位置)之后添加,但它不起作用。
我也读过 ORDER BY RAND() LIMIT 1 如果有很多行会很慢。是否也可以针对这种情况改进我的选择代码?
非常感谢:)
【问题讨论】:
-
不起作用不是对错误的准确描述。请向我们提供确切的错误消息或意外行为的详细描述。如果用户名字段是 varchar,那么您必须用单引号将 $loggeduser 括起来。
-
是的,非常感谢您,这正是错误。我忘记了单引号。如果表有很多行,我应该通过 rand() 限制 1 更改顺序还是改进它?