如何基于外键字段进行SQL查询?

时间:2016-10-24 05:00:53

标签: sql

我有以下表格:

id, people_id, name

父:

SELECT * FROM people
  LEFT JOIN parent ON people.id = parent.people_id
  WHERE parent.name != 'Carol';

我尝试了以下内容:

{{1}}

如何找到父母姓名不是卡罗尔的所有人?

6 个答案:

答案 0 :(得分:2)

您可以尝试以下代码

select people.name from people
inner join parent on people.id=parent.people_id
where parent.name not in ('Carol')

答案 1 :(得分:0)

如果要使用外键查询两个表。

  1. 如果您想从一个表中获取第二个表中包含某些相关条目的所有记录,请使用内部联接

    从People INNER JOIN中选择*父ON人员.id = parent.people_id WHERE parent.name<> '卡罗尔'

  2. 类似地,LEFT JOIN将从LEFT链接表中获取所有记录,但如果您从RIGHT表中选择了一些列,如果没有相关记录,则这些列将包含NULL

答案 2 :(得分:0)

首先,你为什么需要两张桌子?为什么你不能有一个名为" Person" ID,Name,ParentID列

其中ParentID是可选的,如果已获得父ID,则引用该ID。

并运行以下查询

  SELECT TOP 1 D.ORDER_NO
FROM DELIVERY D WHERE D.CUSTOMER_NO =112 
 AND D.DELIVERY_DATE = (SELECT  MAX(D1.DELIVERY_DATE) FROM DELIVERY D1 WHERE D1.CUSTOMER_NO = 112 );
 ORDER BY  DELIVERY_DATE  DESC

答案 3 :(得分:0)

SELECT * FROM people WHERE EXISTS(SELECT 1 FROM parent WHERE people_id = id AND name<>'Carol')

答案 4 :(得分:0)

首先,您采用的表格结构限制了未来的增长。就像将来如果你想添加你父母的父母一样,它就不会在这个表结构中工作。 你可以这样做: id | parent_id | people_name

在这里,您可以为父项创建parent_id null,并为拥有父项的人添加parent_id作为id。这里要检索你必须使用SELF join(加入同一个表)

答案 5 :(得分:0)

`

Select * from people P
INNER JOIN parent PA ON PA.people_id = P._id
where PA.name not in ('Carol')

`

INNER JOIN和LEFT OUTER JOIN之间的区别 是 1)INNER JOIN只在两个表之间带来类似的数据 例如,在人员表中,parent_id表可以为空,那么它不会丢弃完整的行,但是在LEFT OUTER JOIN的情况下,它将带来LEFT表中的所有行以及右表中的相关表。所有null都在右边连接行..