我有问题显示随机项从表中,有没有办法只显示一个随机项目,但不是我不愿意显示的项目?Mysql查询一个随机?
我有表产品
和行
ID TITLE URL_TITLE
和
$link = "coffee";
我希望显示表产品随机只是一个产品,而是不是我在$链接
我想说什么,我只是想从表中随机项,而不是当在$链接=“咖啡”,以获取随机元素
PS $链接在URL_TITLE行:)
我有问题显示随机项从表中,有没有办法只显示一个随机项目,但不是我不愿意显示的项目?Mysql查询一个随机?
我有表产品
和行
ID TITLE URL_TITLE
和
$link = "coffee";
我希望显示表产品随机只是一个产品,而是不是我在$链接
我想说什么,我只是想从表中随机项,而不是当在$链接=“咖啡”,以获取随机元素
PS $链接在URL_TITLE行:)
这应有助于:
SELECT ID, TITLE, URL_TITLE
FROM PRODUCT
WHERE URL_TITLE != "coffee"
ORDER BY RAND()
LIMIT 1;
注意,在SQL的某些版本中,!=
写入<>
。
显然,你想要选择所有行或不同的子集,只需使用SELECT *
或任何你需要的。
编辑:根据HamZa的评论和James的回答,使用ORDER BY RAND()在大型表上是不好的做法。你可能会生成一个随机ID并选择它,检查它不是你的非法的ID,但是如果你有一大堆你不能选择,你可能会调用这个查询很多次(这是不好的)。
SELECT id
FROM PRODUCT
WHERE URL_TITLE != "coffee"
ORDER BY RAND()
LIMIT 1;
尽管我不知道PHP,但我认为一个简单的方法是通过$link
值作为where
条件的一部分。
使用 '纯' SQL:
select *
from product
where URL_TITLE <> 'coffee'
order by rand()
limit 1
在查询中使用rand()并不理想,特别是在大型表格中,但即使是小型的,当您不知道它们何时会增长(即站点或服务超出您的期望等)时也是如此。
您可以使用它像这样:
select item from product where item != '$link' ORDER BY rand() LIMIT 1
但是,你应该用更好的东西,比如临时表,或者你可以在一个查询中选择所有从数据库中的ID,使用PHP来选择一个随机从他们全部,然后使用由PHP选择的ID并从数据库中获取数据。
[一个很好的阅读](http://stackoverflow.com/a/9946238) – HamZa
我现在限制1,这很容易,但要获得随机项目,但没有指定? –
您没有阅读整篇文章 – HamZa