如何只从mysql获取非常见的记录

时间:2012-05-29 16:30:25

标签: mysql

现在我正在使用此查询,但它向我展示了dublicate&非重复列,我只想获得非重复的列,

<?

$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>

            ';

}

?>

1 个答案:

答案 0 :(得分:0)

尝试在您的选择中使用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分组

如果你为一条记录返回一堆不同的整数,并且不想要重复的行,你可以使用group by将结果加总成一行......

以下是描述我散文的参考资料。

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