SQL left join - 限制返回的行数

时间:2014-08-17 07:42:49

标签: mysql

我有一个有效的SQL语句,但其中有一个问题我无法解决。 当我离开加入我的表sites_photos时,sp.sites_id = s.id上可以有多个匹配,但我希望表只返回1.这是否可能。

SELECT s.*, sp.photo
FROM sites s
LEFT JOIN sites_photos sp
ON sp.sites_id = s.id

我的输出:2次标识30,但是使用不同的照片路径,我只想为该ID返回1,或者两者都捆绑在一个数组中。

Array
(
[0] => Array
    (
        [id] => 30
        [url] => www.test.nl
        [name] => Aleve
        [date] => 2014-08-16
        [cms_active] => Y
        [archive] => N
        [photo] => 2014080812365920120214103601number_1.jpg
    )
[1] => Array
    (
        [id] => 30
        [url] => www.test.nl
        [name] => Aleve
        [date] => 2014-08-16
        [cms_active] => Y
        [archive] => N
        [photo] => 20140811021102news.jpg
    )
)

1 个答案:

答案 0 :(得分:2)

你可以这样做,使用GROUP_CONCAT连接每个网站的所有照片并生成以逗号分隔的照片列表,然后你可以SUBSTRING_INDEX使用GROUP_CONCAT的结果来选择一张照片,您还可以在GROUP_CONCAT中添加GROUP_CONCAT(sp.photo ORDER BY sp.id DESC)

的订单条件
SELECT s.*, SUBSTRING_INDEX(GROUP_CONCAT(sp.photo),',',1) photo
FROM sites s
LEFT JOIN sites_photos sp
ON sp.sites_id = s.id
GROUP BY s.id