MySQL NOT IN语句和其他参数


MySQL NOT IN statement with other parameters

我有两页。在第一页上,从我的数据库中随机选择并显示一行。然后提交一份表格。在第二页上,我希望从数据库中选择一个随机行,但我需要从该查询中排除已经随机选择的行。

我已经看到NOT IN是一种实现这一点的方法,但它似乎不能与RAND()LIMIT一起工作,尽管我可能只是弄错了运算符的顺序。以下是到目前为止我得到的不起作用的代码:

$sql_new = "SELECT * FROM table ORDER BY RAND() LIMIT 1 NOT IN (SELECT * FROM table WHERE id='$id')";
$result_new = $mysqli->query($sql_new);

这不会返回任何信息。任何语法方面的帮助都会很棒。

试试这个:

$sql_new = "SELECT * FROM table WHERE id != '$id' ORDER BY RAND() LIMIT 1;";
$result_new = $mysqli->query($sql_new);

MySQL文档称

为了符合SQL标准,IN不仅在左侧的表达式为NULL,但如果没有匹配在列表中找到,并且列表中的一个表达式为NULL。

您需要在NOT IN关键字之前提供列名。像这样的

SELECT val1 FROM tbl1 WHERE val1 NOT IN (1,2,'a');