当前位置: 代码迷 >> Sql Server >> SQL语句 查寻一个表中相同的记录
  详细解决方案

SQL语句 查寻一个表中相同的记录

热度:86   发布时间:2016-04-24 10:23:31.0
SQL语句 查找一个表中相同的记录
如何查找与P_ID(产品编号)为A1完全相同的产品呢?就是,P_PROPERTY与P_QUANTITY都要相同.


表结构如下: 
  create table T ( P_ID VARCHAR(6)  NOT NULL  ,P_PROPERTY VARCHAR(6) NOT NULL  ,
                         P_QUANTITY  INTEGER NOT NULL ,PRIMARY KEY  (P_ID,P_PROPERTY) ) ;

INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A1','X1',2) ; 
INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A1','X2',3) ; 
INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A1','X3',4) ; 
INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A1','X4',4) ;  


INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A2','X1',1) ; 
INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A2','X2',2) ; 
INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A2','X3',3) ; 
INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A2','X4',4) ; 


INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A3','X1',1) ; 
INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A3','X2',4) ; 
INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A3','X3',5) ; 
INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A3','X4',4) ;  


INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A4','X1',2) ; 
INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A4','X2',3) ; 
INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A4','X3',4) ; 
INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A4','X4',4) ;  

------解决方案--------------------
--create table T ( P_ID VARCHAR(6)  NOT NULL  ,P_PROPERTY VARCHAR(6) NOT NULL  ,
--                         P_QUANTITY  INTEGER NOT NULL ,PRIMARY KEY  (P_ID,P_PROPERTY) ) ;

--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A1','X1',2) ; 
--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A1','X2',3) ; 
--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A1','X3',4) ; 
--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A1','X4',4) ;  


--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A2','X1',1) ; 
--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A2','X2',2) ; 
--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A2','X3',3) ; 
--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A2','X4',4) ; 


--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A3','X1',1) ; 
--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A3','X2',4) ; 
--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A3','X3',5) ; 
--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A3','X4',4) ;  


--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A4','X1',2) ; 
--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A4','X2',3) ; 
--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A4','X3',4) ; 
--INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A4','X4',4) ; 
--  INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A5','X1',2) ; 
--   INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A5','X2',3) ; 
--   INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A5','X3',4) ; 
--   INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A5','X4',4) ;  
--   INSERT INTO T (P_ID,P_PROPERTY,P_QUANTITY)   VALUES ('A5','X5',5) ;  
   
   
SELECT *
FROM t
WHERE p_id IN (
SELECT a.p_id
FROM t a INNER JOIN (
SELECT P_PROPERTY,P_QUANTITY,(SELECT count(1)FROM t WHERE P_ID='A1' ) [count] FROM t 
WHERE P_ID='A1' 
  相关解决方案