我在联合方面遇到的麻烦是您查询的表必须具有所有相同的列。有没有办法仅在某些列上使用带有联合的联接进行查询?
SELECT Client.Client_ID, Client.First_Name, Client.Last_Name, Client.Company_Name from Client
union
select Agency_Employee.Employee_ID, Agency_Employee.First_Name, Agency_Employee.Last_Name, ''
from Agency_Employee
union
select Agency_ID, '', '', Agency_Name from Admin_Agency
SELECT proj.ProjectID, A.Project_Title, B.Account_ID, B.Username, B.Access_Type FROM Project_Assigned proj
JOIN Account B
ON proj.AccountID = B.Account_ID
JOIN Project A
ON proj.ProjectID = A.Project_ID
WHERE proj.ProjectID = 1;
在上面,我尝试将创建的连接查询与分配给项目 1 的帐户相匹配,并且与联合查询相结合,我尝试从不同表(例如客户)的帐号中获取其他信息,例如名字、姓氏,机构_雇员。
最佳答案
是的。 您可以通过指定列的名称来完成此操作 - 它们应该相同。 根据您的情况,您可以这样做:
SELECT Client.Client_ID, Client.First_Name, Client.Last_Name, Client.Company_Name from Client
union
select Agency_Employee.Employee_ID as Client_ID, Agency_Employee.First_Name, Agency_Employee.Last_Name, '' as Company_Name
from Agency_Employee
union
select Agency_ID as Client_ID, '' as First_Name, '' as Last_Name, Agency_Name as Company_Name from Admin_Agency
我在您的代码中没有看到您想要如何将联合与以下查询合并,但您可以使用子查询来完成。这是示例:
select a.item1, b.count from table_a a
inner join (
select item1, count(*) as count
from table_b
group by item1
) b on b.item1 = a.item1
关于mysql - 对通过连接创建的某些列进行联合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8094944/