我有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";
我试图为空后加入和用户名!= $ loggeduser(其中正在保存记录的用户名)但它不起作用。
另外,我已经读了ORDER BY RAND()LIMIT 1会很慢,如果有很多行。是否有可能改善我的选择代码的情况呢?
非常感谢:)
不起作用不是一个错误的确切描述。请向我们提供确切的错误信息或有关意外行为的详细说明。如果username字段是一个varchar,那么你将不得不用单引号括起$ loggeduser。 – Shadow
是的非常感谢你,这完全是错误。我忘了单引号。我应该通过rand()更改订单限制1还是改善它,如果表中有许多行? – Billm