寻找PC模型对

Sea*_*ock 3 sql sql-server-2005

我正在尝试解决sql练习.

这是架构

个人计算机

code     int  
model    varchar(50)  
speed    smallint  
ram      smallint  
hd       real  
cd       varchar(10)  
price    money  
Run Code Online (Sandbox Code Playgroud)

问题 :

找到具有相似速度和RAM的PC模型对.结果,每个得到的对仅显示一次,即(i,j)但不显示(j,i).

我写了一个查询,但它显示(i,j)和(j,i).

我的查询:

select  t1.model,t2.model,t1.speed,t1.ram from pc t1 , pc t2
where t1.speed = t2.speed and t1.ram = t2.ram and t1.model != t2.model
Run Code Online (Sandbox Code Playgroud)

输出:

model   model   speed   ram
1121    1233    750     128
1232    1233    500     64
1232    1260    500     32
1233    1121    750     128
1233    1232    500     64
1260    1232    500     32
Run Code Online (Sandbox Code Playgroud)

所需输出:

model   model   speed   ram
1233    1121    750     128
1233    1232    500     64
1260    1232    500     32
Run Code Online (Sandbox Code Playgroud)

那么如何在输出中避免(j,i)?

谢谢.

Ish*_*tar 5

输出和所需输出之间的差异正是具有的行t1.model < t2.model.要删除它们,只需添加另一个AND t1.model >= t2.model.但是因为你已经要求t1.model != t2.model,完整的查询是

select  t1.model,t2.model,t1.speed,t1.ram 
from pc t1 , pc t2 
where t1.speed = t2.speed and t1.ram = t2.ram and t1.model > t2.model
Run Code Online (Sandbox Code Playgroud)