如何使用不相交的连接在SQL中编写表
所以我有三个表,我想用不相交的连接创建它们。这些是个人、承租人和雇员。 所以每个人都必须是房客或雇员,决不能两者兼而有之。 我使用PersonID主键创建了一个Person表,tenant和Employee作为两个独立的表,它们的主键都是链接回PersonPersonID的外键。如何使用不相交的连接在SQL中编写表,sql,database,relationship,Sql,Database,Relationship,所以我有三个表,我想用不相交的连接创建它们。这些是个人、承租人和雇员。 所以每个人都必须是房客或雇员,决不能两者兼而有之。 我使用PersonID主键创建了一个Person表,tenant和Employee作为两个独立的表,它们的主键都是链接回PersonPersonID的外键。 我如何在这里创建一个不相交的区域,每个人只能是租户或雇员?谢谢您可以试试这个,它将挑选出每一位个人或员工: SELECT * FROM (SELECT person.*, CASE WHEN
我如何在这里创建一个不相交的区域,每个人只能是租户或雇员?谢谢您可以试试这个,它将挑选出每一位个人或员工:
SELECT *
FROM (SELECT person.*,
CASE WHEN employee.id IS NULL THEN 0 ELSE 1 END AS is_employee,
CASE WHEN tenant.id IS NULL THEN 0 ELSE 1 END AS is_tenant
FROM person LEFT JOIN employee on person.id = employee.id
LEFT JOIN tenant on person.id = tenant.id) AS tA
WHERE tA.is_employee <> tA.is_person
确保所有id列都已编制索引。您可以尝试此操作,它将挑选出个人或员工:
SELECT *
FROM (SELECT person.*,
CASE WHEN employee.id IS NULL THEN 0 ELSE 1 END AS is_employee,
CASE WHEN tenant.id IS NULL THEN 0 ELSE 1 END AS is_tenant
FROM person LEFT JOIN employee on person.id = employee.id
LEFT JOIN tenant on person.id = tenant.id) AS tA
WHERE tA.is_employee <> tA.is_person
确保id列都已编入索引。-您能提供一些示例数据和您希望返回的内容吗?这听起来应该是一个简单的连接。学习如何提问。请回答您的问题,并根据这些数据添加一些内容和预期输出。请您的问题-不要在评论中发布代码或附加信息。您使用的是哪种产品?博士后?神谕SQL只是一种查询语言,而不是特定数据库产品的名称。-您能否提供一些示例数据以及您希望返回的内容?这听起来应该是一个简单的连接。学习如何提问。请回答您的问题,并根据这些数据添加一些内容和预期输出。请您的问题-不要在评论中发布代码或附加信息。您使用的是哪种产品?博士后?神谕SQL只是一种查询语言,而不是特定数据库产品的名称。