Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL:如何在select查询中使其成为虚拟列?_Mysql - Fatal编程技术网

MYSQL:如何在select查询中使其成为虚拟列?

MYSQL:如何在select查询中使其成为虚拟列?,mysql,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语句和某些行中写入

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

查询示例:

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列中所有行的id值


谢谢

使用
合并

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
我猜你需要这个:

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

使用
选择。。。UNION…
您的意思是我必须使用UNION ALL编写每个查询?不,但这不是解决方案,对不起,不清楚你想要什么,请澄清问题