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)?
谢谢.
输出和所需输出之间的差异正是具有的行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)