如何使用 SQL 应用连接查询

how to apply join query using SQL

我在 MySQL 数据库中有 2 个 table。

第一个 table 是 'property',包含列(id(pk)、标题、描述、状态)

第二个table是'object_property',其中存储了object和属性之间的所有关系及其关系值,具有列(id(pk), object_id,property_id(fk 参考列是 属性 table 的 'id'),值)

现在我想从 'property' table 中提取所有属性的结果,其中关系在 'object_property' table.[=11= 中不存在]

我需要为此编写 SQL 连接查询...

有人能帮帮我吗?我是 SQL.

的新手

谢谢!

试试这个:

select p.* FROM property p inner join object_property o on o.property_id!=p.id;

如果您直接在 MySQL 中编写对 运行 的原始查询,您可以使用以下 LEFT JOIN:

SELECT p.*
FROM property p
LEFT JOIN object_property op
    ON p.id = op.property_id
WHERE op.property_id IS NULL

如果您在 HQL 中编写查询,那么您将处理代表 table 的 实体 (Java POJO),而不是 table他们自己。我可以提供以下 HQL 查询:

from Property p 
left join p.ObjectProperty as op
where op is null

这假设您有一个名为 Property 的 class,代表 property table。它还假定 object_property table 具有实体 class ObjectProperty,并且 Property 具有对 ObjectProperty.[=19= 的引用]

你有两个table,

table property ( id, title, description, status, primary key(id) )
table object_property ( id, object_id, property_id, value, primary key(id) )

其中 object_property.property_id 是 property.id

的外键

您可以连接这些 table 以获取共享公共键的行(元组),

SELECT p.id, p.title, p.description, p.status, op.id, op.object_id, op.value
FROM property AS p LEFT JOIN object_property AS op ON p.id = op.property_id ;

您可以使用 INNER JOIN、LEFT JOIN、RIGHT JOIN,具体取决于您要匹配的内容,但是这里您要查找 属性 中的行object_property table(LEFT OUTER JOIN 的 OUTER 部分)中不存在 id,

SELECT p.id, p.title, p.description, p.status
FROM property AS p
WHERE p.id NOT IN (SELECT DISTINCT op.property_id FROM object_property AS op ) ;