首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何限制仅为一个用户检索1个随机工作而不是所有作品

如何限制仅为一个用户检索1个随机工作而不是所有作品
EN

Stack Overflow用户
提问于 2014-11-19 06:08:05
回答 2查看 33关注 0票数 0

我有两个表userdatafile& user,其中我根据公共ID将两个表合并在一起,以查找附加到ID的相应工作,下面的PHP代码从用户那里检索了这些作品,因为我只想向每个用户显示一个工作,但是如果用户有2-3工作,它也会显示出不同的工作。

PHP

代码语言:javascript
复制
<?php
    include 'dbAuthen.php';
    $sql = 'SELECT * FROM userdatafiles JOIN users ON userdatafiles.UserID = users.UserID WHERE Specialisation = "Painting"';

    $result = mysqli_query($con,$sql);  
    if (mysqli_num_rows($result) > 0) {
        // output data of each row
        while($row = mysqli_fetch_assoc($result)) {
            $links[] = array(
                "links" => $row["Link"],
                "caption" => $row["Name"],
            );                  
        }
        shuffle($links);
        echo json_encode($links);   
    } else {
        echo "0 results";
    }
?>

如果我只上传了一个用户的作品,那么应该如何改进代码,这样如果一个用户有多个作品,那么它只会显示一个随机的工作吗?谢谢..

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-19 06:31:27

使用DISTINCT消除重复的userid:

代码语言:javascript
复制
$sql = 'SELECT DISTINCT(users.UserID),name,link FROM userdatafiles JOIN users ON userdatafiles.UserID = users.UserID WHERE Specialisation = "Painting" ORDER BY RAND()';

或按以下方式使用组:

代码语言:javascript
复制
$sql = 'SELECT users.UserID,name,link FROM userdatafiles JOIN users ON userdatafiles.UserID = users.UserID WHERE Specialisation = "Painting" GROUP BY UserID ORDER BY RAND()';
票数 0
EN

Stack Overflow用户

发布于 2014-11-19 06:09:54

使用兰德()进行随机显示,并将限制设置为1,这样就可以得到一条随机记录

代码语言:javascript
复制
ORDER BY RAND() LIMIT 1

因此,您的查询将是:

代码语言:javascript
复制
$sql = 'SELECT * FROM userdatafiles JOIN users ON userdatafiles.UserID = users.UserID WHERE Specialisation = "Painting" ORDER BY RAND() LIMIT 1';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27010134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档