我遇到了我认为应该是最简单的SQL语句的问题,但它对我不起作用......
我有4个表:S,P,J和SPJ,其中SPJ基本上是一个将所有ID连接在一起的表。
现在,所需的声明是:“获取供应P2部分和P4部分的供应商的供应商编号。”
SELECT SNO FROM SPJ WHERE PNO = 'P2' AND PNO = 'P4'
- 不返回任何结果(这是错误的)
SELECT SNO FROM SPJ WHERE PNO = 'P2' UNION SELECT SNO FROM SPJ WHERE PNO = 'P4'
- 返回结果,加上额外的,只提供两个中的一个......
我已经尝试了各种各样的陈述,但无法弄清楚,我知道它必须简单,但我只是看不到它......
有人有任何想法吗?
干杯
答案 0 :(得分:5)
这将为您提供两个部分的供应商,而不是那些提供/或。
的供应商。select sno
from spj
where pno in ('P2','P4')
group by sno
having count(distinct pno) = 2
答案 1 :(得分:2)
或者作为@Sathya的替代
SELECT SNO
FROM SPJ
WHERE PNO = 'P2'
OR PNO = 'P4'
答案 2 :(得分:1)
SELECT SNO FROM SPJ WHERE PNO in ('P2','P4')
答案 3 :(得分:0)
最好使用OR
SELECT SNO FROM SPJ WHERE PNO = 'P2' OR PNO= 'P4'
答案 4 :(得分:0)
“从SPJ中选择SNO PNO ='P2'和PNO ='P4'”
显然PNO不能同时是P2和p4。 如果不知道db方案就很难回答你的问题,你应该给出你的表的描述。