加入两行单表,所有重复值除了一行?

时间:2016-02-13 13:10:22

标签: php mysql codeigniter

我搜索了这么多,但是我还没找到任何合适的解决方案。我是开发人员,并且不熟悉SQL查询。请帮帮我。

该表由两个表用户&的LEFT JOIN生成。具有外键location_id的位置。

getting this

现在我希望它像下面那样..

expecting this

3 个答案:

答案 0 :(得分:0)

如果用户总共只有两个地址,那么您可以尝试这样的子查询:

SELECT 
  u.user_id,
  u.full_name,
  u.user_type, 
  (SELECT name FROM location WHERE id=u.location_id LIMIT 1) location,
  (SELECT name FROM location WHERE id=u.location_id LIMIT 1 OFFSET 1) location_something
FROM user u
...

如果只找到一个地址, location_something 将为空。

答案 1 :(得分:0)

如果您不确定地点的数量,那么我认为我们无法获得“预期结果”'使用SQL查询。

答案 2 :(得分:0)

假设您已将连接结果保留在#SomeTable

您可以选择

之类的结果
SELECT 
  user_id, full_name, user_type,
  STUFF((
    SELECT ', ' + [location] 
    FROM #SomeTable
    WHERE (user_id = Results.user_id) 
    FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)')
  ,1,2,'') AS Locations
FROM #SomeTable Results
GROUP BY user_id, full_name, user_type

并且在代码中的某处,您可以在每行中拆分“位置”列