我有以下表格:
人
id, people_id, name
父:
SELECT * FROM people
LEFT JOIN parent ON people.id = parent.people_id
WHERE parent.name != 'Carol';
我尝试了以下内容:
{{1}}
如何找到父母姓名不是卡罗尔的所有人?
答案 0 :(得分:2)
您可以尝试以下代码
select people.name from people
inner join parent on people.id=parent.people_id
where parent.name not in ('Carol')
答案 1 :(得分:0)
如果要使用外键查询两个表。
如果您想从一个表中获取第二个表中包含某些相关条目的所有记录,请使用内部联接
从People INNER JOIN中选择*父ON人员.id = parent.people_id WHERE parent.name<> '卡罗尔'
类似地,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都在右边连接行..