我该如何做这个简单的SQL SELECT语句?

时间:2010-12-09 15:40:09

标签: sql select mysql phpmyadmin

我遇到了我认为应该是最简单的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'
- 返回结果,加上额外的,只提供两个中的一个......

我已经尝试了各种各样的陈述,但无法弄清楚,我知道它必须简单,但我只是看不到它......

有人有任何想法吗?

干杯

5 个答案:

答案 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方案就很难回答你的问题,你应该给出你的表的描述。