Php SQL在中仅选择ID中的1行
如何在sql请求中为每个ID仅获取一张照片 我的画廊桌子:Php SQL在中仅选择ID中的1行,php,mysql,sql,Php,Mysql,Sql,如何在sql请求中为每个ID仅获取一张照片 我的画廊桌子: +----+----------+ | id | name | +----+----------+ | 1 | gallery1 | | 2 | gallery2 | | 3 | gallery3 | +----+----------+ 和照片表: +----+------------+------------+ | id | name | gallery_id | +----+------------+--
+----+----------+
| id | name |
+----+----------+
| 1 | gallery1 |
| 2 | gallery2 |
| 3 | gallery3 |
+----+----------+
和照片表:
+----+------------+------------+
| id | name | gallery_id |
+----+------------+------------+
| 1 | photo1.jpg | 1 |
| 2 | photo2.jpg | 1 |
| 3 | photo3.jpg | 2 |
| 4 | photo4.jpg | 3 |
| 5 | photo5.jpg | 3 |
| 6 | photo6.jpg | 3 |
+----+------------+------------+
我使用MySQL
我从gallery sql中选择了我的图库,然后我想从photos sql中为每一行获取一张照片。你能帮我怎么做吗
foreach($this->gallery as $val){
$this->arr_id = $this->arr_id.$val['id'].',';
}
$this->arr_id = trim($this->arr_id, ',');
echo $this->arr_id; (4,3,2,1)
您需要使用一些聚合函数和group by按类别过滤单个照片,如下所示:
SELECT min(id) as photo_id FROM photos GROUP BY gallery_id
现在,您可以利用此信息为每个图库获取一张照片:
SELECT
*
FROM
photos
WHERE
id IN (SELECT
MIN(id) AS photo_id
FROM
photos
GROUP BY gallery_id)
您也可以使用JOIN
而不是WHERE IN
:
SELECT
*
FROM
photos
JOIN
(SELECT
MIN(id) AS photo_id
FROM
photos
GROUP BY gallery_id) single ON (photos.id = single.photo_id)
如果还需要库名,将上面的与库
表也连接起来:
SELECT
*
FROM
photos
JOIN
gallery ON (photos.gallery_id = gallery.id)
JOIN
(SELECT
MIN(id) AS photo_id
FROM
photos
GROUP BY gallery_id) single ON (photos.id = single.photo_id)
随机照片
SELECT *
FROM gallery G
INNER JOIN
(
SELECT id AS photo_id, gallery_id
FROM photos
ORDER BY RAND()
LIMIT 1
) p ON G.id = p.gallery_id
第一张照片:
SELECT *
FROM gallery G
INNER JOIN
(
SELECT MIN(id) AS photo_id, gallery_id
FROM photos
GROUP BY gallery_id
) p ON G.id = p.gallery_id
最后一张照片:
SELECT *
FROM gallery G
INNER JOIN
(
SELECT MAX(id) AS photo_id, gallery_id
FROM photos
GROUP BY gallery_id
) p ON G.id = p.gallery_id
你想要什么还不清楚,请解释清楚。是否要为每个库仅选择一张照片,或其他内容?展示你现有的照片是的,我只想为每个画廊拍一张照片如果有多个潜在的候选人,那么你的标准是什么来决定在输出中要哪一张?哪一张。一个????第一个仅返回一张照片用于一个图库@草莓LIMIT 1
不是吗?我想OP希望每个画廊有一张照片——就像你的其他查询一样。