选择第一个连接值,而不是全部

时间:2014-02-04 12:35:11

标签: mysql sql

我有桌子:

'gallery' - information about existing galleries 
id_gallery  name     date
==========  ====  ===========
    1        ...   timestamp

'photo' - information and name of every photo in system
id_photo   photo_name
========   ===========
   1        some name 

'photo_gallery' - "connecting" table, which says which photo are in which gallery
id_photo_gallery   id_photo           id_gallery
================   ================   =================
       1           id from 'photo'    id from 'gallery'

我需要选择一个画廊(有一些关于它的信息,但这并不重要),只有一张照片来自'照片'表。

这(大惊喜)返回所有照片。 (关于图库的重复信息)

SELECT 
    photo_gallery.id_photo as id_photo
FROM
    gallery
        JOIN
    photo_gallery ON gallery.id_gallery = photo_gallery.id_gallery

修改

这只返回一个画廊,而不是很多。我需要为每个图库检索一张照片...

SELECT 
    photo_gallery.id_photo as id_photo
FROM
    gallery
        JOIN
    photo_gallery ON gallery.id_gallery = photo_gallery.id_gallery LIMIT 1

3 个答案:

答案 0 :(得分:1)

请尝试以下查询:

SELECT galery.*, photo.* 
FROM galery
LEFT JOIN photo_gallery ON galery.id = photo_gallery.id_gallery
LEFT JOIN photo ON photo_gallery.id_photo = photo.id
GROUP BY galery.id

答案 1 :(得分:0)

使用LIMIT

SELECT 
    pg.id_photo
FROM gallery g
LEFT OUTER JOIN (
    SELECT id_gallery, MAX(id_photo) AS id_photo photo_gallery pg
    GROUP BY id_gallery
) AS pg
    ON g.id_gallery = pg.id_gallery

答案 2 :(得分:0)

试试这个

SELECT
gallery.name,
photo.photo_name
FROM
  gallery
  INNER JOIN photo_gallery
    ON (gallery.id_gallery = photo_gallery.id_gallery)
  INNER JOIN photo
    ON (photo.id_photo = photo_gallery.id_photo_gallery)
ORDER BY gallery.id_gallery DESC

如果您想要更多数据写入字段名称...