Sql 关于选择查询,一个表多个结果
在问我的问题之前,我搜索了一下: 我有两张桌子 表信息:Sql 关于选择查询,一个表多个结果,sql,select,Sql,Select,在问我的问题之前,我搜索了一下: 我有两张桌子 表信息: no | name 1 | david 2 | kang no | staffno | skillno ------------------------ 1 | 1 | 1 2 | 2 | 1 3 | 2 | 2 4 | 2 | 3 表信息杀死: no | name 1 | david 2 |
no | name
1 | david
2 | kang
no | staffno | skillno
------------------------
1 | 1 | 1
2 | 2 | 1
3 | 2 | 2
4 | 2 | 3
表信息杀死:
no | name
1 | david
2 | kang
no | staffno | skillno
------------------------
1 | 1 | 1
2 | 2 | 1
3 | 2 | 2
4 | 2 | 3
info\u skill
表中的staffno
,info
表中的no
是外键
我想得到:
name
包含“ka”skillno
1,2,3SELECT a.NAME
FROM (SELECT no,
NAME
FROM info
WHERE NAME LIKE '%ka%') AS a
INNER JOIN info_skill AS b
ON a.no = b.staffno
INNER JOIN info_skill AS c
ON a.no = c.staffno
INNER JOIN info_skill AS d
ON a.no = d.staffno
WHERE b.skillno = '1'
AND c.skillno = '2'
AND d.skillno = '3'
我想知道的是这部分
INNER JOIN info_skill AS b
ON a.no = b.staffno
INNER JOIN info_skill AS c
ON a.no = c.staffno
INNER JOIN info_skill AS d
ON a.no = d.staffno
WHERE b.skillno = '1'
AND c.skillno = '2'
AND d.skillno = '3'
还有别的办法吗
select a.name
from info a
inner join info_skill as b on a.no = b.staffno
where b.skillno in (1,2,3)
and name like '%ka%'
group by a.name
having count(distinct b.skillno) = 3
试试这个:
SELECT I.name
FROM info I
JOIN info_skill S
ON I.no = S.staffno
WHERE I.name LIKE'%ka%" AND
S.skillno=1 OR
S.skillno=2 OR
S.skillno=3
这意味着:
- 在外键后面连接两个表
- 然后使用
像%ka%
- 现在,您需要检查skillno是否等于1、2或3
如果这不是您确切需要的,那么请通过解释您确切需要的内容使您的问题更清楚。谢谢您的回答。但语法所在的位置必须是“and”。我知道“是”或“……你试过了吗?
having
子句确保只取having all 3.yes。我试过了。但我在(1,2,3,4)和(1,2,3)中得到了相同的结果。1、2、3、4结果也可以……@noDisplayName:我知道代码的格式,并且我完全按照我喜欢的方式进行格式化。所以,请不要改变其他用户的代码,只有当你认为你的代码风格比你的好others@juergend-道歉并回滚