我有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