0

次のMySQLを使用しようとしています:

  SELECT distinct(photos.id)
       , photos.file
       , photos.tags
       , photos.desc
       , photos.ratio
       , tags.bid
       , tags.tagname_id 
    FROM photos
       , tags 
   WHERE photos.trending=1 
     AND tags.pid=photos.id
ORDER BY RAND() 
   LIMIT 10

エントリの重複を防ぐために使用しようとしDISTINCTましたが、私の状況では機能していないようです。

これを機能させる最良の方法は何ですか?

4

1 に答える 1

0
 SELECT photos.id
   , photos.file
   , photos.tags
   , photos.desc
   , photos.ratio
   , tags.bid
   , tags.tagname_id 
FROM photos
   , tags 
WHERE photos.trending=1 
 AND tags.pid=photos.id
GROUP BY photos.id
ORDER BY RAND() 
LIMIT 10

これはクエリを実行する正しい方法ですが、photos.id から同じ行を任意に 1 つ選択するため、異なるインスタンスで異なる結果になる可能性があります。

MS SQL の有効なクエリ、sqlfiddleを見てください:

select photos.col1,max(photos.col2),max(photos.col3),max(tags.col5),max(tags.col6)
from photos,tags
where photos.col1=tags.col4
group by col1

SQL 命令は次のとおりです。列によるグループ化を使用する場合、OR でグループ化されていない限り、選択に含めることはできません。集計関数で使用されます。

于 2012-09-08T00:06:16.633 に答える