1

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

我已经看到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);

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

4

2 回答 2

1

尝试这个:

$sql_new = "SELECT * FROM table WHERE id != '$id' ORDER BY RAND() LIMIT 1;";
$result_new = $mysqli->query($sql_new);
于 2013-08-15T09:32:45.943 回答
0

正如 MySQL Docs 所说

为了符合 SQL 标准,IN 不仅在左侧的表达式为 NULL 时返回 NULL,而且在列表中未找到匹配项且列表中的表达式之一为 NULL 时返回 NULL。

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

SELECT val1 FROM tbl1 WHERE val1 NOT IN (1,2,'a');
于 2013-08-15T09:35:01.467 回答