首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysql如果不存在,请从其他表中选择默认图像

mysql如果不存在,请从其他表中选择默认图像
EN

Stack Overflow用户
提问于 2013-04-16 15:19:29
回答 1查看 422关注 0票数 1

我有一个具有如下数据模式的相册图库

代码语言:javascript
复制
| album_id | album_title |
| 1        |  test       |
| 2        |  test123    |
| 3        |  testing    |

| img_id   | img_albumid | img_full_path  | img_album_cover
| 1        |  1          | /blabla/1.jpg  |  0
| 2        |  1          | /blabla/2.jpg  |  1
| 3        |  1          | /blabla/3.jpg  |  0
| 4        |  2          | /blabla/4.jpg  |  0
| 5        |  2          | /blabla/5.jpg  |  1
| 6        |  3          | /blabla/6.jpg  |  0
| 7        |  3          | /blabla/7.jpg  |  0

我可以通过交叉连接图像来显示相册。问题是,我想设置相册封面的默认图像。封面相册将从图片表中显示,如果用户已设置它,但如果封面相册未设置,则仅从img获取任何图像作为封面。到目前为止,这个查询是有效的,但不适用于封面专辑

代码语言:javascript
复制
SELECT album_id, album_title, img_full_path
FROM album 
LEFT JOIN image ON album_id = img_albumid
WHERE img_albumid != 0
GROUP BY(album_id) 
limit 10

如何用php和mysql查询?谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-04-16 15:23:49

使用IFNULL()函数:

代码语言:javascript
复制
SELECT album_id, album_title, IFNULL(img_full_path, 'default.jpg') as img_full_path
FROM album 
LEFT JOIN image ON album_id = img_albumid
WHERE img_albumid != 0
GROUP BY(album_id) 
limit 10

来源:http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

您甚至可以使用子查询,它应该只包含一行和一列,如下所示:

代码语言:javascript
复制
SELECT
    album_id,
    album_title,
    IFNULL(img_full_path, (
        SELECT
            img_full_path
        FROM
            image
        WHERE
            (img_albumid = album_id)
            AND
            NOT (img_full_path IS NULL)
        ORDER BY
            RAND()
        LIMIT 1)
    ) as img_full_path
FROM
    album LEFT JOIN image ON album_id = img_albumid
WHERE
    img_albumid != 0
GROUP BY
    album_id
LIMIT 10
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16031005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档