Mysql 如何连接表中的两行?

Mysql 如何连接表中的两行?,mysql,sql,Mysql,Sql,您好,我这里有一个表,表中有以下列:appliantid、Name和Age。我想知道如何将两行申请者连接在一起,显示在同一个表(php)上。我正试图从数据库中检索它。谢谢 -------------------------------------- Applicant ID Name Age -------------------------------------- 001 John 20 002

您好,我这里有一个表,表中有以下列:
appliantid
Name
Age
。我想知道如何将两行申请者连接在一起,显示在同一个表(php)上。我正试图从数据库中检索它。谢谢

--------------------------------------
Applicant ID       Name       Age
--------------------------------------
001                John       20
002                Nick       22
下面是我希望它返回的内容

--------------------------------------
Name1       Age1     Name2    Age2
--------------------------------------
John         20      Nick     22
编辑:来自Amit工作的代码,但返回的数据是:



如何只返回Nick一次?

如果您使用的是php,可能是这样的:

假设我们有一个数组,它的值与表的值相同

$arr = [ 
          ['Applicant ID' => 001, 'Name' => 'John', 'Age' => 20],
          ['Applicant ID' => 002, 'Name' => 'Nick', 'Age' => 22],
       ];

$res = [];

foreach($arr as $key => $values){
   $names = 'Name'.($key+1);
   $ages = 'Age'.($key+1);
   $res[$names] = $values['Name'];
   $res[$ages]  = $values['Age'];
}

如果您使用的是php,可能是这样的:

假设我们有一个数组,它的值与表的值相同

$arr = [ 
          ['Applicant ID' => 001, 'Name' => 'John', 'Age' => 20],
          ['Applicant ID' => 002, 'Name' => 'Nick', 'Age' => 22],
       ];

$res = [];

foreach($arr as $key => $values){
   $names = 'Name'.($key+1);
   $ages = 'Age'.($key+1);
   $res[$names] = $values['Name'];
   $res[$ages]  = $values['Age'];
}

您可以通过使用以下查询使用自联接:-

SELECT applicant1.name, 
       applicant1.age,
       applicant2.name, 
       applicant2.age 
FROM applicant as applicant1
JOIN applicant applicant2 
    on applicant1.applicant_id+1 = applicant2.applicant_id;

您可以通过使用以下查询使用自联接:-

SELECT applicant1.name, 
       applicant1.age,
       applicant2.name, 
       applicant2.age 
FROM applicant as applicant1
JOIN applicant applicant2 
    on applicant1.applicant_id+1 = applicant2.applicant_id;
您可以使用交叉(自)连接过滤行

  select a.name as name1, a.age as age1, b.name as name2, b.age as age2
  from  table1 as a
  cross join table2 as b 
  where a.applicant_ID = '001'
  and b.applicant_ID ='002'
您可以使用交叉(自)连接过滤行

  select a.name as name1, a.age as age1, b.name as name2, b.age as age2
  from  table1 as a
  cross join table2 as b 
  where a.applicant_ID = '001'
  and b.applicant_ID ='002'


一行有两个申请人的名字是什么意思,如果你有10行申请人的名字是什么样子的,这样我就可以知道你问题的概念和目的,一行有两个申请人的名字是什么意思,如果你有10行申请者,它看起来像什么,这样我就可以知道你问题的概念和目的谢谢,但我是用phpmyadmin的数据来做的,它也有效吗?我对此表示怀疑,因为你没有价值的限制谢谢,但我是用phpmyadmin的数据来做的,它也能工作吗?我对此表示怀疑,因为您没有值的限制。谢谢,我会试试这个。谢谢,我会试试这个。谢谢,我会试试这个。嗨,阿米特,我已经试过您的代码,并且我设法返回了数据。然而,当我有第三排时,它变成这样。基本上在第二行,成员Nick成为Name1。我可以知道如何只返回第一行吗?----------------------------------------------------姓名1年龄1姓名2年龄2---------------------------------------------约翰20尼克22尼克22朱迪24@Azvier您也可以使用limit来限制数据。选择Appliant1.name、Appliant1.age、Appliant2.name,申请人2.申请人作为申请人的年龄1加入申请人2.申请人id+1=申请人2.申请人id限制1;谢谢你,阿米特。您知道如何只返回不同的名称吗?尼克的名字出现了两次。第一行一次,第二行第二次谢谢,我会试试这个。嗨,阿米特,我已经试过你的代码了,我成功地返回了数据。然而,当我有第三排时,它变成这样。基本上在第二行,成员Nick成为Name1。我可以知道如何只返回第一行吗?----------------------------------------------------姓名1年龄1姓名2年龄2---------------------------------------------约翰20尼克22尼克22朱迪24@Azvier您也可以使用limit来限制数据。选择Appliant1.name、Appliant1.age、Appliant2.name,申请人2.申请人作为申请人的年龄1加入申请人2.申请人id+1=申请人2.申请人id限制1;谢谢你,阿米特。您知道如何只返回不同的名称吗?尼克的名字出现了两次。第一排一次,第二排第二次