mysql - 对通过连接创建的某些列进行联合?

标签 mysql

我在联合方面遇到的麻烦是您查询的表必须具有所有相同的列。有没有办法仅在某些列上使用带有联合的联接进行查询?

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/

相关文章:

mysql - 如何在没有 DROP 数据库权限的情况下从命令行删除所有 MySQL 表?

mysql - 在mysql中检索两个日期(m-d格式)之间的数据

sql - MySQL:左连接与右连接的联合

php - 我应该使用什么数据库模型来存储这种数据格式?

mysql - mysql 语法错误 : Befor Update Trigger

sql - 在多个表上执行条件 mysql 连接的最有效方法? (Yii php框架)

php - <select> 中的下拉列表为空

mysql - 如何将类的实例方法名称存储在sql数据库的列中?

mysql - 如何用netbeans执行程序?

php - 无法从 mysql 数据库中获取特定行