消除mysql select语句

时间:2017-12-27 20:34:10

标签: php select mysqli distinct

希望有人可以帮助我。我在同一个问题上读过这么多问题,但没有人回答我的问题。我的PHP代码中有以下SQL SELECT语句:

$sql = "
        SELECT DISTINCT 
            pics.piclocation,
            pics.picid,
            rating 
        FROM 
            pics,
            ratings 
        WHERE 
            pics.milfid = ratings.picid 
        ORDER BY 
            ratings.rating DESC
        ";

然而,许多人都知道DISTINCT关键字不会一直消除重复的行。问题是同一张图片经常不止一次输出,即pics.piclocation。这个想法是每个pic的评级从1到5,然后插入到评级表中。

关于如何生成输出并消除重复piclocation行的任何想法?我希望根据哪个图片具有最多5个评级来列出图片,如果这有帮助的话。

谢谢!

2 个答案:

答案 0 :(得分:1)

因此,如果您只想要评分为import rlp = require('readline'); const rl = rlp.createInterface({ input: process.stdin, output: process.stdout }); let prom = new Promise((fulfill, reject) => { rl.question('Enter input: ', input => rl.close() && fulfill(input)); }); prom.then(result => {console.log(result); return prom}) .then(result => {console.log(result); return prom}) .then(result => console.log(result));的图片,那么请继续选择该图片,然后您可以计算该图片已获得的图片的数量并按此顺序排序。然后,您还需要按照唯一标识符对图像进行分组,该图像看起来像5pics.milfid

ratings.picid

如果您只想获得评分最高的图片,那么您可以 SELECT pics.piclocation, pics.picid, COUNT(ratings.rating) as nb_ratings FROM pics, ratings WHERE pics.milfid = ratings.picid AND ratings.rating = 5 GROUP BY ratings.picid ORDER BY nb_ratings DESC 评分:

SUM

答案 1 :(得分:0)

在SQL中,多个字段也可以添加DISTINCT子句。 DISTINCT将消除所有选定字段相同的行。

SELECT DISTINCT column1, column2, ...
FROM table_name; 

所以你可以试试这个:

$sql = "SELECT DISTINCT 
               pics.piclocation,
               pics.picid,
               ratings.rating 
        FROM pics JOIN ratings ON pics.milfid = ratings.picid 
        ORDER BY ratings.rating DESC";