2017-06-17 47 views
0

我有两个列一列与另一相关...MySQL错误来选择数据

表:base_data

id |---name----|-----des 
1 | some name1 | The description1 
2 | some name2 | The description2 

表:照片

id |---p_id----|-----photo 
1 |  1  | img1s.jpg 
2 |  1  | img1w.jpg 
3 |  2  | img2.jpg 
4 |  2  | img14.jpg 
5 |  2  | img15.jpg 

我想选择所有数据从表1(base_data)和相关行中的一行从照片:表我怎么能做到这一点?

我不想选择由每组最大ň我想从第一个表中的所有数据,并且只有一排与第一表行ID,而不是其他的只是第一场比赛相匹配的第二个表。

我想要的结果...

id |---name----|---des----|---p_id----|---photo----| 
1 | some name |the des..1| 1  | img1s.jpg| 
2 | some name |the des..2| 2  | img2.jpg| 
+0

请修改您的结果,以显示您希望数据输出,而不是数组定义。 – SandPiper

+0

这似乎是另一个[标签:最大n-per-group] SQL问题。解决方案已多次发布。 –

+0

不,我不想选择由每组最大ň我想从第一表中选择的所有数据,只有一排与第一表行ID,而不是其他的只是第一场比赛相匹配的第二个表。 –

回答

0

如果你想在最低的字母数字照片的名字,在MySQL中,你可以这样做:

select 
    t1.*, 
    t2.photo 
from 
    base_data as t1 
    left join (
     select 
      p_id, 
      min(photo) as photo 
     from 
      photos 
     group by 
      p_id 
     ) as t2 on t2.p_id = t1.id; 
+0

看有两个入口在base_data表,并在照片表5项,我只想要一个照片的base_data表匹配其ID和p_id的一个条目。 –

1

我想你想base_data与关联拍摄的第一张照片,应该是最低的那张照片photos.id。在MySQL中,你可以写出如下这样:创建这给出了一个中间查询 - 任何p_id - 具有最低id相应的记录。然后,将这个中间查询结果加入base_data。希望有没有很多错别字:-):

select b.id, p2.photo 
from base_data b left join 
    (select p.photo, p.p_id, min(id) from photos p group by p.p_id) p2 on b.id = p2.p_id 
+0

是的,你是对的 –

+0

但我怎么能只是从照片表base_data表和照片选择ID ???? –

+1

非常感谢,兄弟。 –