Mysql Join 2表为每个相关数据返回一行

Mysql Join 2表为每个相关数据返回一行,mysql,Mysql,我试图用不同的照片url连接两个表,但我无法这样做。我不知道这是否可能 我的表与下面的示例相似,我想加入它们 +-------------++----------------------------+ |表1 | |表2| +----+------+-------+ +----+-----------+-----------+ |id |姓名|地点| | id |照片| url |表格1 | id| +----+------+-------+ +----+-----------+

我试图用不同的照片url连接两个表,但我无法这样做。我不知道这是否可能

我的表与下面的示例相似,我想加入它们

+-------------++----------------------------+
|表1 | |表2|
+----+------+-------+     +----+-----------+-----------+
|id |姓名|地点| | id |照片| url |表格1 | id|
+----+------+-------+     +----+-----------+-----------+
|1 | abc | xyz | 1 | link1 | 1|
|2 | def | jiu | 2 | link2 | 1|
|3 | efw | jlo | 3 | link3 | 3|
+----+------+-------+| 4 | link4 | 2|
+----+-----------+-----------+
+-------------------------------+
|加入|
+----+------+-------+-----------+
|id |姓名|地点|照片| url|
+----+------+-------+-----------+
|1 | abc | xyz |链接1|
|2 | def | jiu | link3|
|3 | efw | jlo | link4|
+----+------+-------+-----------+

我是MySQL新手,还在学习。我被困在这里,我感谢任何解决方案。

您可以使用
加入

SELECT t1.*,
  t2.photo_url
FROM table1 t1
JOIN table2 t2
  ON (t1.id = t2.table1_id)
JOIN (
  SELECT min(id) AS id,
    table1_id
  FROM table2
  GROUP BY table1_id
) t3 ON (t2.id = t3.id
   AND t2.table1_id = t3.table1_id)
Self
JOIN
对于
table2
是根据
table1\u id
仅拾取照片



你有没有试过这样的方法:

SELECT table1.id,
  table1.name,
  table1.place,
  table2.photo_url
FROM table1
LEFT JOIN table2
  ON table1.id = table2.table1_id;
我基本上是根据
id
标准从to表中选择所需字段的


您可以在这里查看MySQL教程:

取决于您如何定义所需的
photo\u url
的值

仅假设
MIN
1:-

SELECT table1.id,
  table1.name,
  table1.place,
  MIN(table2.photourl)
FROM table1
LEFT OUTER JOIN table2
  ON table1.id = table2.table1_id
GROUP BY table1.id,
  table1.name,
  table1.place
如果您不关心哪一个(虽然这在MySQL中有效,但它是不可靠的SQL):-


如果您想要更复杂一点的内容,那么您可能需要使用子查询为每个
table1\u id
获取所选的
photo\u url
,然后
JOIN
将该子查询连接到
table1

您要连接哪些表?前两个?为什么表1ID为1时为link1而不是link2?
SELECT table1.id,
  table1.name,
  table1.place,
  table2.photo_url
FROM table1
LEFT OUTER JOIN table2
  ON table1.id = table2.table1_id
GROUP BY table1.id,
  table1.name,
  table1.place