2012-12-21 77 views
0

我试图做一个SQL查询,它将返回表1中的所有值,如果它具有表2中的对应值。我也想返回相应的值表2中的值,但只有它们是多个值时才将其限制为1。返回表1中的所有列和表2中的一列

这里是数据的一个示例:

TABLE 1: album 
------------- 
ALBUM_ID 
1  
4   
5 
13 

TABLE 2: photo 
------------- 
PHOTO_ID  ALBUM_ID   IMAGE 
1    4     img1 
4    4     img2 
6    1     img17 
15    4     img15 
24    3     img3 
与上述数据

所以,我想下面返回:

ALBUM_ID:1 IMAGE17 //因为专辑1具有相关联的图像 ALBUM_ID :4 IMAGE1 //因为专辑4有关联的图像,但我只想要一个像

我当前的查询是:

SELECT * 
FROM album 
INNER JOIN photo ON album.album_id=photo.album_id 
GROUP BY album.album_id 

但是,这是返回照片中的所有列,我只是想它返回图像,而不是photo_id或album_id

任何帮助将是伟大的,谢谢!

回答

1

试试这个:

SELECT al.*, ph.column_name 
FROM album AS al 
INNER JOIN photo AS ph ON album.album_id=photo.album_id 
GROUP BY album.album_id 
+0

很好,工作,谢谢! – Benzino

+1

你在使用什么数据库引擎?该SQL会在Oracle上给出错误。 –

0

抱歉,但我不知道你用的是什么的SQL Server ...

PLS/SQL和T-SQL具有特殊功能的这个duplicit导致

mysql有没有我想...

但尝试用限制子查询

为MySQL尝试下查询 //没有测试..从我的脑海破碎

SELECT 
    alb.*, -- or all columns with prefix alb 
    pho.IMAGE 
FROM album alb 
INNER JOIN (
       SELECT ALBUM_ID, IMAGE FROM photo LIMIT = 1 
) pho ON pho.ALBUM_ID = alb.ALBUM_ID 

工作写?

相关问题