这是我的表:
id 姓名 工作过的单位
1 刘德华 财务局
2 郭富城 税务局
3 张学友 公安局
4 郭富城 公安局
我想查出即在税务局工作过,又在公安局工作过的人,我已经用组合语句实现了:SELECT a.姓名
FROM (SELECT *
FROM 单位表
WHERE 工作过的单位 = '公安局') a INNER JOIN
(SELECT *
FROM 单位表
WHERE 工作过的单位 = '税务局') b ON a.姓名 = b.姓名但我由于某种原因,想用其他方法实现,就是说不用组合查询,只是在select * from 单位表 where 后面加sql语句就可以实现的啊??估计很难,高手也许能解决,请高手教2招吧!!!!!
id 姓名 工作过的单位
1 刘德华 财务局
2 郭富城 税务局
3 张学友 公安局
4 郭富城 公安局
我想查出即在税务局工作过,又在公安局工作过的人,我已经用组合语句实现了:SELECT a.姓名
FROM (SELECT *
FROM 单位表
WHERE 工作过的单位 = '公安局') a INNER JOIN
(SELECT *
FROM 单位表
WHERE 工作过的单位 = '税务局') b ON a.姓名 = b.姓名但我由于某种原因,想用其他方法实现,就是说不用组合查询,只是在select * from 单位表 where 后面加sql语句就可以实现的啊??估计很难,高手也许能解决,请高手教2招吧!!!!!
where 工作过的单位='xxx' or 工作过的单位='xxxx'
这样查出来的结果是有一个满足条件就可以,我想查在两个单位都工作的记录
FROM SELECT *
FROM 单位表
WHERE 工作过的单位 = '公安局' or 工作过的单位 = '税务局'
where 工作单位='税务局')
FROM SELECT *
FROM 单位表
WHERE 工作过的单位 = '公安局' and 工作过的单位 = '税务局'
我不想用我上面的语句,因为在程序用太负载。
这是我的表:
id 姓名 工作过的单位
1 刘德华 财务局
2 郭富城 税务局
3 张学友 公安局
4 郭富城 公安局
我想查出即在税务局工作过,又在公安局工作过的人
from 单位表 l inner join 单位表 r
on l.姓名 = r.姓名
where l.工作过的单位='公安局' and r.工作过的单位='税务局'
where a.工作过的单位='公安局' and b.工作过的单位='税务局'
from table as a ,table as b
where a.工作过的单位='公安局' and b.工作过的单位='税务局'
where A.工作过的单位='公安局' and B.工作过的单位='税务局'
就是"或,交,差"
那么我们用交查询实现;
select 姓名 from 单位表 where 工作过的单位='税务局'intersect select 姓名 from 单位表 where 工作过的单位='公安局';注:where子句是元组选择子句,本例不能用AND
也就是说在某一列下面,不可能满足俩种条件
where 工作过的单位='xxx' and 工作过的单位='xxxx'
select 姓名 from table group by 姓名 having count(*)>1
select 姓名 from table where 工作过的单位 in ('税务局','公安局') group by 姓名 having count(*)>1