【问题标题】:select join multiple rows into single row选择将多行加入单行
【发布时间】:2014-01-08 23:31:30
【问题描述】:

我有一张这样的桌子

用户

name   |  phone   |  email
jane   | 123456   |jane@test.com
jack   | 223456   |jack @test.com

我想根据他们唯一的电话号码选择这两个用户,去给

borrower  |  lender   |  email
name      |  jack     | jane@test.com

这是我尝试过的

SELECT  u1.name borrower,u1.email, u2.name lender  FROM users u1  
LEFT JOIN users u2 on u2.phone='123456' WHERE u1.phone='223456'

这给了我 4 行而不是 1 行有什么问题?

【问题讨论】:

  • "几行成 1 行" = GROUP BY, "只选择 2 行" = LIMIT 2
  • 我将按什么分组,这里没有唯一的列

标签: mysql select left-join


【解决方案1】:

SQLFIDDLE

SELECT 
  u1.name borrower,
  u1.email, 
  u2.name lender 
FROM 
  users u1, 
  users u2 
WHERE 
  u2.phone='123456' 
  and 
  u1.phone='223456'
;

【讨论】:

  • 我得到了相同的结果,4 行
  • 如果你有 4 行,那么我猜你的 users 表中有两次相同的行。请从用户中选择 * 进行检查。清理你的表或做一个独特的查询,如select distinct u1.name borrower...
  • 谢谢,我发现其中一个号码有重复记录
猜你喜欢
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多