MYSQL:如何在select Query中创建虚拟列?

时间:2013-05-16 08:56:20

标签: mysql

以下是我的问题,任何人都知道如何解决此问题:

示例查询:

SELECT id, table2.id as global_id, table3.id as global_id 
FROM table1 
LEFT JOIN table2 
  ON ( table1.id = table2.tab1_id ) 
LEFT JOIN table3 
  ON ( table1.id = table3.tab1_id ) 
WHERE etc etc

基本上我不想在select语句中写两次“global_id”列,而且在某些行中也有id = NULL

请在这里写下工作查询。如何获取global_id列中所有行的id值?

由于

2 个答案:

答案 0 :(得分:0)

使用COALESCE

SELECT table1.id, COALESCE(table2.id, table3.id) as global_id 
FROM table1 
LEFT JOIN table2 
  ON ( table1.id = table2.tab1_id ) 
LEFT JOIN table3 
  ON ( table1.id = table3.tab1_id ) 
WHERE etc etc

答案 1 :(得分:0)

猜猜你需要这个:

SELECT id, table2.id as global_id
FROM table1 
LEFT JOIN table2 
  ON ( table1.id = table2.tab1_id ) 
WHERE etc etc
UNION ALL
SELECT id, table3.id as global_id 
FROM table1 
LEFT JOIN table3 
  ON ( table1.id = table3.tab1_id ) 
WHERE etc etc