我有一个具有如下数据模式的相册图库
| 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获取任何图像作为封面。到目前为止,这个查询是有效的,但不适用于封面专辑
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查询?谢谢
发布于 2013-04-16 15:23:49
使用IFNULL()函数:
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
您甚至可以使用子查询,它应该只包含一行和一列,如下所示:
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 10https://stackoverflow.com/questions/16031005
复制相似问题