【问题标题】:MYSQL, Get only first rows with unique id from colum with multiple same value rows?MYSQL,仅从具有多个相同值行的列中获取具有唯一 ID 的第一行?
【发布时间】:2012-08-23 07:33:16
【问题描述】:

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

user_annons中的每一行总是有一个唯一的id,id列是自增的,随机键列也是唯一的。

但是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 表中唯一具有唯一随机键值的行,以及user_photos 表中的第一个唯一随机键行。

现在代码先显示一张图片,然后显示来自 user_annons 的标题和 pris,然后显示来自 user_annons 的不同图片但相同的标题和 pris,因为 user_annons 中有一行但有两行在user_photos 中具有相同的随机键值。

那么有没有人可以帮助我?

【问题讨论】:

    标签: mysql select unique unique-key


    【解决方案1】:

    使用限制 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 行。我想要所有具有唯一 ID 的第一行。
    【解决方案2】:
    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 将获取最后一个

    【讨论】:

    • 它不起作用。警告:mysql_fetch_array() 期望参数 1 是资源,布尔值在第 39 行的 C:\xampp\htdocs\Login_Script\view.php 中给出
    • 它不起作用,因为您没有根据您的要求对其进行修改,您应该学习在连接中使用子查询
    • 我确实尝试将其修改为我的要求,但它仍然不起作用。
    • 如果我运行 SQL 查询,问题是这样的:#1054 - '字段列表' 中的未知列 'up.iname',我认为是 user_photos 没有获取 AS 别名?
    • 它不是 up.iname 根据查询它应该是 ua.iname
    猜你喜欢
    • 2020-11-06
    • 2022-01-24
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多