Php mysql查询中连接数据重复后

Php mysql查询中连接数据重复后,php,mysql,sql,Php,Mysql,Sql,我的问题是为什么它只返回4行而不是2行? 如果我需要使用distinct或group by进行查询,则在表中没有重新返回4的值???尝试以下查询: table :First .............................................................................. id | ros | table | column | stool | date | places| .................................

我的问题是为什么它只返回4行而不是2行? 如果我需要使用distinct或group by进行查询,则在表中没有重新返回4的值???

尝试以下查询:

table :First
..............................................................................
id | ros | table | column | stool | date | places|
..............................................................................
1   12  5   6   a   2017-07-17  goa  |
2   12  5   6   b   2017-07-17  delhi|
..............................................................................


table :second

..........................................................................
id  | ros | name | email | phone | stos|address |date |
....................................................................................................
5      12    and   and@her.com  394924673464    6  fddsfds  2017-07-03 |
6      12    her     her@and.com    84838593894     6  fdafdfd  2017-07-04  |
....................................................................................................


Query like I am Using:
SELECT `p`.* FROM `first` `p` LEFT JOIN `second` as `st` ON `st`.`ros`=`p`.`ros` ORDER BY `id` DESC LIMIT 10;
请尝试以下查询:

table :First
..............................................................................
id | ros | table | column | stool | date | places|
..............................................................................
1   12  5   6   a   2017-07-17  goa  |
2   12  5   6   b   2017-07-17  delhi|
..............................................................................


table :second

..........................................................................
id  | ros | name | email | phone | stos|address |date |
....................................................................................................
5      12    and   and@her.com  394924673464    6  fddsfds  2017-07-03 |
6      12    her     her@and.com    84838593894     6  fdafdfd  2017-07-04  |
....................................................................................................


Query like I am Using:
SELECT `p`.* FROM `first` `p` LEFT JOIN `second` as `st` ON `st`.`ros`=`p`.`ros` ORDER BY `id` DESC LIMIT 10;

它返回4列,因为您的表具有重复的
站点id

使用此更改您的查询。这将只返回2行

SELECT p.* FROM first as p LEFT JOIN second as st ON st.site_id=p.site_id group by p.id ORDER BY p.id DESC LIMIT 10;

它返回4列,因为您的表具有重复的
站点id

使用此更改您的查询。这将只返回2行

SELECT p.* FROM first as p LEFT JOIN second as st ON st.site_id=p.site_id group by p.id ORDER BY p.id DESC LIMIT 10;

它返回4行,因为两个表中的所有站点id都是11。要使其成为两列,只需在sql语句中添加GROUPBY即可

就像:

SELECT `p`.* FROM `first` `p` LEFT JOIN `second` as `st` ON `st`.`site_id`=`p`.`site_id` GROUP BY p.id ORDER BY `id` DESC LIMIT 10;

它返回4行,因为两个表中的所有站点id都是11。要使其成为两列,只需在sql语句中添加GROUPBY即可

就像:

SELECT `p`.* FROM `first` `p` LEFT JOIN `second` as `st` ON `st`.`site_id`=`p`.`site_id` GROUP BY p.id ORDER BY `id` DESC LIMIT 10;

您的问题“为什么”的答案是:这是正常的,因为您正在加入
站点id
,并且第一个表中的每一行在第二个表中都有两个匹配的
站点id
行,因此2*2=4

SELECT `p`.* FROM `first` `p` LEFT JOIN `second` as `st` ON 
`st`.`site_id`=`p`.`site_id` GROUP BY `p`.`id` ORDER BY `id` DESC LIMIT 10;
当您将31从第一个表连接到
site\u id
上的第二个表时,您将得到两行
(31加5,31加6)

当您在
site\u id
上将32从第一个表加入到第二个表时,您将得到两行
(32加5,32加6)


您需要按照@Sonu Bamniya所说的将结果分组您的问题“为什么”的答案是:这是正常的,因为您在
site\u id
上加入,并且第一个表中的每一行在第二个表中都有两个匹配的
site\u id
行,所以2*2=4

SELECT `p`.* FROM `first` `p` LEFT JOIN `second` as `st` ON 
`st`.`site_id`=`p`.`site_id` GROUP BY `p`.`id` ORDER BY `id` DESC LIMIT 10;
当您将31从第一个表连接到
site\u id
上的第二个表时,您将得到两行
(31加5,31加6)

当您在
site\u id
上将32从第一个表加入到第二个表时,您将得到两行
(32加5,32加6)


您需要按照@Sonu Bamniya所说的那样对person上的结果进行分组

您需要添加另一个连接条件来停止复制,但表中没有任何明显的内容可以满足此要求。您需要添加另一个连接条件来停止复制,但您的表格中没有明显的内容可以满足此要求。@ArushiWelcome@Arushi欢迎