在MySQL中搜索两个或多个表?
我想搜索两个(或三个)以上的表 表:人在MySQL中搜索两个或多个表?,mysql,sql,join,Mysql,Sql,Join,我想搜索两个(或三个)以上的表 表:人 id | name | age 1 | AA | 20 2 | BB | 30 3 | CC | 40 表:数据 id | person_id | item 1 | 2 | nail 2 | 2 | hammer 3 | 1 | hammer 4 | 2 | hat person.id是data.person\u id 因此,我有以下问题: 我怎样才能找到所有有
id | name | age
1 | AA | 20
2 | BB | 30
3 | CC | 40
表:数据
id | person_id | item
1 | 2 | nail
2 | 2 | hammer
3 | 1 | hammer
4 | 2 | hat
person.id是data.person\u id
因此,我有以下问题:
- 我怎样才能找到所有有锤子的人
- 我怎样才能找到所有没有物品的人
- 我怎样才能找到所有20岁和有锤子的人?(我想现在只需加上where‘和p.age=20’)
- 如何找到所有拥有物品的人
内部联接
:
SELECT p.*
FROM Persons p
JOIN data d ON p.id = d.person_id
WHERE d.item = 'hammer';
SELECT p.*
FROM Persons p
LEFT JOIN data d ON p.id = d.person_id
WHERE d.ID IS NULL;
我怎样才能找到所有没有物品的人
select persons.name
from persons
left join data on persons.id=data.person_id where
data.item='hammer';
select persons.name
from persons
left join data on persons.id=data.person_id where
data.item is NULL;
像这样使用LEFT JOIN
:
SELECT p.*
FROM Persons p
JOIN data d ON p.id = d.person_id
WHERE d.item = 'hammer';
SELECT p.*
FROM Persons p
LEFT JOIN data d ON p.id = d.person_id
WHERE d.ID IS NULL;
我怎样才能找到所有20岁和有锤子的人
正如您在第一个查询中已经提到的添加和p.age=20
:
SELECT p.*
FROM Persons p
JOIN data d ON p.id = d.person_id
WHERE d.item = 'hammer'
AND p.age = 20;
如何找到所有拥有物品的人
将简单的内部联接
与不同
一起使用
SELECT DISTINCT p.*
FROM Persons p
JOIN data d ON p.id = d.person_id;
看见
有关JOIN
的更多详细信息,请查看以下内容:查找hammer
SELECT p.person_name FROM persons as p
INNER JOIN data AS d
ON d.person_id=p.person_id
WHERE d.item='hammer'
查找没有物品的人
SELECT p.person_name FROM persons as p
INNER JOIN data AS d
ON d.person_id=p.person_id
WHERE d.item is null
列出所有拥有锤子的人:
SELECT A.name FROM persons A
JOIN data B ON B.person_id=A.id
WHERE B.item='hammer'
列出没有项目的所有人员:
SELECT A.name FROM persons A
JOIN data B ON B.person_id!=A.id
最简单的方法是使用基本的左连接。 这些应该对你有帮助!谢谢你的提问 我怎样才能找到所有没有物品的人
select persons.name
from persons
left join data on persons.id=data.person_id where
data.item='hammer';
select persons.name
from persons
left join data on persons.id=data.person_id where
data.item is NULL;
我怎样才能找到所有没有物品的人
select persons.name
from persons
left join data on persons.id=data.person_id where
data.item='hammer';
select persons.name
from persons
left join data on persons.id=data.person_id where
data.item is NULL;
我怎样才能找到所有没有物品的人?
和我怎样才能找到所有没有物品的人?
?我没有错!更正为正确的问题,但我想我现在应该怎么做。。我希望如此!请不要在一个问题中问所有问题。相反,搜索重复项,如果找不到,请单独询问。请阅读有关SQL的基本教程。这将在很早的时候被讨论。从Persons p中选择DISTINCT p.*在p.id=d.Persons\u id上加入数据d;如果p.id的数据中有多行,那么每个p.id只能获得一行吗?@user2482699-这就是我使用DISTINCT
的原因。看起来你还没有测试过任何查询。但我并没有用DISTINCT@user2482699-您的第一条评论是这样的:每个p.id是否可能只获得一行?现在你说的是相反的,但我得到的不仅仅是一个p.id和DISTINCT。你到底想要什么。请说得具体一点,清楚一点。现在我明白了。。我在查询时稍微更改了语法。。对不起,我错过了那个部分