组合同名列

bnl4lu3b  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(653)

所以我有两个表,它们的列名是一样的。在结果查询中,我希望合并结果,结果将占用空的结果。
以下是我的表格结构:
位置

账户

员工

学生

子系统控制器

姓名

办公室

这是我的密码: SELECT app.approved, p.position, n.fname, n.mname, n.lname, o.office, e.signature, ssc.signature FROM approvals app LEFT JOIN positions p ON p.position_id = app.position_id LEFT JOIN accounts a ON a.account_id = app.account_id LEFT JOIN employees e ON e.account_id = a.account_id LEFT JOIN students s ON s.account_id = a.account_id LEFT JOIN ssc ON ssc.students_id = s.students_id AND ssc.removed = 0 LEFT JOIN names n ON n.name_id = s.name_id OR n.name_id = e.name_id LEFT JOIN offices o ON o.office_id = p.office_id WHERE app.event_id = '10' 实际结果如下:

注意,e.signature的某些行是空的,而ssc.signature的行是相同的,因此我希望将它们合并,顺便说一下,ssc永远不能在employees表中有它的签名。

weylhg0b

weylhg0b1#

如果列名相同,则可以使用别名。

SELECT 
p.column1 as p_column1, 
p.product_name as p_product_name , 
s.product_name as s_product_name
FROM products p INNER JOIN suppliers s

更多信息:http://www.mysqltutorial.org/mysql-alias/

voase2hg

voase2hg2#

因为您知道要合并的列的名称,所以需要使用mysql COALESCE() 函数返回在提供的参数列表中找到的第一个非空值。

SELECT COALESCE(NULL, NULL, NULL, 'Aquaman', NULL, 'Some other dude');

这会回来的 Aquaman .
实际上,可以使用列名而不是原始值。例如:

SELECT app.approved, COALESCE(e.signature, ssc.signature) AS signature;

请注意 AS signature part不是必需的,但应该注意您可以为组合字段选择别名。

相关问题