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

Chr*_*rds 1 mysql sql select 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'
- 返回结果,加上额外的,只提供两个中的一个......

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

有人有任何想法吗?

干杯

Joe*_*lli 5

这将为您提供提供两个部件的供应商,而不是提供这两个部件的供应商.

select sno
    from spj
    where pno in ('P2','P4')
    group by sno
    having count(distinct pno) = 2
Run Code Online (Sandbox Code Playgroud)

  • +1:到目前为止只回答实现"P2 AND P4". (3认同)