-1

現在、このクエリを使用していますが、重複した列と重複していない列の両方が表示されています。重複していない列のみを取得したいのですが、

<?

$queryy=mysql_query("SELECT   
 mybb_posts.pid, mybb_posts.subject,mybb_posts.message,mybb_posts.tid,
mybb_attachments.pid,mybb_attachments.aid
FROM mybb_posts
INNER JOIN mybb_attachments
USING(pid,pid)
ORDER  BY  `aid` DESC
LIMIT 7")or die($query."<br/><br/>".mysql_error());

while ($lista=mysql_fetch_array($queryy))
{
echo '


            <img src="attachment.php?aid='.$lista["aid"].'   " alt="" />
                <h4><a href="#" >'.$lista["subject"].'</a></h4>

            ';

}

?>
4

1 に答える 1

0

select で DISTINCT を使用してみてください。

SELECT DISTINCT
posts.pid, 
posts.subject,
posts.message,
posts.tid, 
attach.pid,
attach.aid 
FROM mybb_posts post
INNER JOIN mybb_attachments attach
ON mybb_posts.pid = mybb_attachments.pid
ORDER  BY  `aid` DESC LIMIT 7

この DISTINCT クエリは、PID が両方の列で一致する一意の結果のみを返す必要があります。その PID に関連するエンティティが複数ある場合は、別の行が挿入されます。

group by は、エンティティで集計関数を使用する場合にのみ使用できます。例: SELECT で SUM(attach.aid) を使用すると、PID でグループ化できます。

1 つのレコードに対して多数の異なる整数を返し、重複した行が必要ない場合は、group by を使用して結果を 1 行に合計できます...

これは私の散文を説明する参考文献です。

http://blog.sqlauthority.com/2007/03/29/sql-server-difference-between-distinct-and-group-by-distinct-vs-group-by/

于 2012-05-29T16:35:45.733 に答える