sql 查询 sqlserver200 distinct 问题
发布网友
发布时间:2022-04-26 20:07
我来回答
共5个回答
热心网友
时间:2023-10-27 10:09
很简单,在select 出的字段前加入distinct 就会把出现重复的字段取唯一值,如下
strsql = "select distinct PI_iID,PI_sCode,PI_sName,PI_fPrice,PIP_sImage from View_ProctPic" &_
" where PI_iID in (" & Session("ProctList") & ") order by PI_iID"
但是你需要注意,由于你所取的字段不止有PI_iID,还包括PI_sCode,PI_sName,PI_fPrice,PIP_sImage ,所以如果有些产品的PI_iID相同,而其他这四个字段里有个别相同的话,还是可能出现PI_iID重复的记录。
这时如何取值,你需要再考虑一下。
热心网友
时间:2023-10-27 10:10
你的想法有点问题:
PI_iID, PI_sCode, PI_sName, PI_fPrice, PIP_sImage
1 11 张三 1000 图片1
1 12 李四 2000 图片2
类似这样的数据如果【PI_iID】只显示【1】后面的数据显示什么?
如果非得只显示一个【1】的话,只能类似如下:
strsql = "select PI_iID,
max(PI_sCode),
max(PI_sName),
max(PI_fPrice),
max(PIP_sImage)
from View_ProctPic" &_
" where PI_iID in ("
&Session("ProctList")&
") group by PI_iID order by PI_iID"
---
以上,希望对你有所帮助。
热心网友
时间:2023-10-27 10:10
strsql = "select distinct PI_iID,PI_sCode,PI_sName,PI_fPrice,
PIP_sImage from View_ProctPic" &_
" where PI_iID in ("&Session("ProctList")&") order by PI_iID"
热心网友
时间:2023-10-27 10:11
strsql = "select distinct * from View_ProctPic" &_
" where PI_iID in ("&Session("ProctList")&") order by PI_iID"
热心网友
时间:2023-10-27 10:11
--将表看做两张表,做联合查询,以5个字段做条件删选,去除5个字段都相同的记录
select PI_iID,PI_sCode,PI_sName,PI_fPrice,PIP_sImage
from View_ProctPic vp1,
(select PI_iID,PI_sCode,PI_sName,PI_fPrice,PIP_sImage
from View_ProctPic group by PI_iID,PI_sCode,PI_sName,PI_fPrice,PIP_sImage
having count(*)>1) vp2
where vp1.PI_iID=vp2.PI_iID,vp1.PI_sCode=vp2.PI_sCode,
vp1.PI_sName=vp2.PI_sName,vp1.PI_fPrice=vp2.PI_fPrice,vp1.PIP_sImage=vp2.PIP_sImage
看看吧,应该有用
热心网友
时间:2023-10-27 10:09
很简单,在select 出的字段前加入distinct 就会把出现重复的字段取唯一值,如下
strsql = "select distinct PI_iID,PI_sCode,PI_sName,PI_fPrice,PIP_sImage from View_ProctPic" &_
" where PI_iID in (" & Session("ProctList") & ") order by PI_iID"
但是你需要注意,由于你所取的字段不止有PI_iID,还包括PI_sCode,PI_sName,PI_fPrice,PIP_sImage ,所以如果有些产品的PI_iID相同,而其他这四个字段里有个别相同的话,还是可能出现PI_iID重复的记录。
这时如何取值,你需要再考虑一下。
热心网友
时间:2023-10-27 10:10
你的想法有点问题:
PI_iID, PI_sCode, PI_sName, PI_fPrice, PIP_sImage
1 11 张三 1000 图片1
1 12 李四 2000 图片2
类似这样的数据如果【PI_iID】只显示【1】后面的数据显示什么?
如果非得只显示一个【1】的话,只能类似如下:
strsql = "select PI_iID,
max(PI_sCode),
max(PI_sName),
max(PI_fPrice),
max(PIP_sImage)
from View_ProctPic" &_
" where PI_iID in ("
&Session("ProctList")&
") group by PI_iID order by PI_iID"
---
以上,希望对你有所帮助。
热心网友
时间:2023-10-27 10:10
strsql = "select distinct PI_iID,PI_sCode,PI_sName,PI_fPrice,
PIP_sImage from View_ProctPic" &_
" where PI_iID in ("&Session("ProctList")&") order by PI_iID"
热心网友
时间:2023-10-27 10:11
strsql = "select distinct * from View_ProctPic" &_
" where PI_iID in ("&Session("ProctList")&") order by PI_iID"
热心网友
时间:2023-10-27 10:11
--将表看做两张表,做联合查询,以5个字段做条件删选,去除5个字段都相同的记录
select PI_iID,PI_sCode,PI_sName,PI_fPrice,PIP_sImage
from View_ProctPic vp1,
(select PI_iID,PI_sCode,PI_sName,PI_fPrice,PIP_sImage
from View_ProctPic group by PI_iID,PI_sCode,PI_sName,PI_fPrice,PIP_sImage
having count(*)>1) vp2
where vp1.PI_iID=vp2.PI_iID,vp1.PI_sCode=vp2.PI_sCode,
vp1.PI_sName=vp2.PI_sName,vp1.PI_fPrice=vp2.PI_fPrice,vp1.PIP_sImage=vp2.PIP_sImage
看看吧,应该有用