左联接,多列联合选择

时间:2019-07-01 04:59:02

标签: sql sqlite

我有三个具有相同名称列的表,我想从所有这些表中分别选择用户(不重复) 这是我的查询,它有效,

SELECT User FROM Table1 UNION SELECT User FROM Table2 UNION SELECT User FROM Table3

如何在“选择”中添加另一列

类似的东西

SELECT User, Time

但是我只需要在用户列和时间列上合并,仅出于查看目的。

更新:这是我拥有的3张桌子。我想从这些表中获取用户名,而无需重复(不同)。我希望时间列显示在结果中

User  | Time     
Sam   | 12.00      
Jack  | 12.00      
Harry | 12.00      
John  | 12.00    
John  | 12.00    
Sam   | 12.00   

User    | Time     
Jacob   | 12.00      
Jack    | 12.00      
Harry   | 12.00      
John    | 12.00    
Charlie | 12.00    
Sam     | 12.00   

User    | Time     
Mason   | 12.00      
William | 12.00      
Harry   | 12.00      
John    | 12.00    
Charlie | 12.00    
Sam     | 12.00   

结果应该是这样的:

User    | Time     
Mason   | 12.00      
William | 12.00      
Harry   | 12.00      
John    | 12.00    
Charlie | 12.00    
Sam     | 12.00 
Jacob   | 12.00 
Jack    | 12.00

2 个答案:

答案 0 :(得分:2)

由于听起来像您的实际数据(与示例不同),因此每个用户在不同的表中具有不同的时间戳,并且您不必在乎只要选择用户的那些时间戳中的 名称是唯一的...

SELECT User, min(Time)
FROM (SELECT User, Time FROM Table1
      UNION ALL
      SELECT User, Time FROM Table2
      UNION ALL
      SELECT User, Time FROM Table3)
GROUP BY User;

答案 1 :(得分:1)

您的样本数据意味着Time值始终是相同的,因此您不介意在表中选择任何值。这里的一种选择是只选择一个常数值作为Time值:

SELECT User, '12.00' AS Time FROM Table1 UNION ALL
SELECT User, '12.00' FROM Table2 UNION ALL
SELECT User, '12.00' FROM Table3