MYSQL,只从具有多个相同值行的列获取具有唯一ID的第一行?

时间:2012-08-23 07:33:16

标签: mysql select unique unique-key

我有两个表user_photosuser_annons,我使用join从两个表中获取。

user_annons中,每一行始终具有唯一ID,Id列是自动增量,randomkey列也是唯一的。

但是在user_photos表中,可以有多个行具有相同的randomkey值,randomkey值与user_annons中的相同。 user_photos表还有一个自动增量的id列。

我的代码如下所示:

$result = mysql_query("SELECT iname, title, pris 
                        FROM user_annons 
                        JOIN user_photos 
                        ON user_photos.randomkey = user_annons.randomkey 
                        AND user_annons.profile_id='".$profile_id."' 
                        AND user_photos.profile_id='".$profile_id."'");

while ($row2 = mysql_fetch_array($result, MYSQL_ASSOC))
{
    echo "<a href=\"".$profile_id."/images/".$row2['iname']."\">
    <img src=\"".$profile_id."/images/".$row2['iname']."\"></a>";
    echo $row2['title'];
    echo $row2['pris'];
}

我想要的是获取user_annons表中唯一具有唯一randomkey值的行,以及user_photos表中第一个唯一的randomkey行。

现在代码首先显示一张图片,然后显示来自你ser_annons的标题和pris,然后是user_annons的相同标题和pris,因为user_annons中有一行1}}但user_photos中的两行具有相同的randomkey值。

那么有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

使用LIMIT 1

$result = mysql_query("SELECT iname, title, pris 
                        FROM user_annons 
                        JOIN user_photos 
                        ON user_photos.randomkey = user_annons.randomkey 
                        AND user_annons.profile_id='".$profile_id."' 
                        AND user_photos.profile_id='".$profile_id."' LIMIT 1");

答案 1 :(得分:0)

SELECT 
    ua.iname, 
    ua.title, 
    ua.pris,
    up.profile_id
FROM user_annons as ua
JOIN (select min(id) as up_id , randomkey , profile_id from  user_photos) as up ON up.randomkey = ua.randomkey 
AND ua.profile_id='".$profile_id."' 
AND up.profile_id='".$profile_id."'

使用MIN()将获取第一个匹配行,如果使用MAX,则将获取最后一行