根据连接到MySQL中的第二个表,将一个表中的两行组合在一起

时间:2017-08-01 22:48:13

标签: mysql

你好我在MySQL中有两个表。第一个表称为用户,它具有与表2相关的列ID,称为family。族表有两列,familyID和userID。基本上我想要做的是连接users表中的第一个名称列,其中familyID是相同的。

因此,如果John(userID 1)和Jane(userID 2)的familyID为123,则返回“John和Jane”的结果。

这是否适用于SQL或我是否需要其他编程语言(如C#)并进行逻辑检查?

更新信息: 用户表:

/ 列信息 /

字段类型键
----------------- ----------- ------
id int(11)PRI
username varchar(30)
fName varchar(50)
lName varchar(50)

家庭表:

/ 列信息 /

字段类型整理空键

ID int(11)(NULL)NO MUL
userID int(11)(NULL)YES MUL

/ 索引信息 /

表Non_unique Key_name Seq_in_index Column_name

family 1 familyUser 1 userID
家庭1 familyID 1 ID

我已经尝试了几个连接,甚至是一个自我加入,但是大部分都返回数据而不是我正在寻找的,因为它重复了所有名字连接在一起。

如果您需要任何其他信息,请与我们联系。

2 个答案:

答案 0 :(得分:0)

您可以使用INNER JOIN在您的条件中使用系列列:

SELECT users.first_name 
    FROM users 
INNER JOIN family 
    ON family.userID=users.ID 
WHERE family.ID=:familyId;

编辑: Soory我是一个PHP人员,因此:familyId应该替换为您正在搜索的实际familyID。 连接表时,您还可以使用连接表中的列作为条件,因此在上述查询中,只会选择在族表中具有提供的familyID的相应行的结果。

答案 1 :(得分:0)

我能够通过我能够找到的一些其他帖子here帮助解决这个问题并进行一些调整。

这就是我提出的:

SELECT
  REPLACE(GROUP_CONCAT(IF(f.id = f.id,u.fname, NULL)), ',', ' & ') AS 'First Name'
FROM users AS u
JOIN family AS f 
  ON u.id = f.userid 
GROUP BY f.id;

感谢您在网站上解决我的问题!