一个关于order by的sql语句问题

我有两个表,GoodsIn和Goods,GoodsIn里面的GoodsId作为外键关联Goods的主键GoodsIdGoodsIn(入库单)里面包含GoodsInIdGo... 我有两个表,GoodsIn和 Goods,GoodsIn 里面的 GoodsId作为外键关联Goods的主键GoodsId
GoodsIn(入库单)里面包含 GoodsInId GoodsId inputTime等信息
Good(物品单)包含 GoodsId GoodsName 等信息
我现在想要从GoodsIn 表中查询在入库单中GoodId=x 或者=y 的入库单信息
要求查询的结果为 GoodInId
GoodId inputTime GoodsName
所以我的语句为SELECT DISTINCT
GoodsInId,InputTime,GoodsId.GoodsName,GoodsId FROM Goods AS GoodsId, GoodsIn
WHERE GoodsIn.GoodsId=GoodsId(这里的GoodsId是外键别名,连接到Good表).GoodsId AND 1=1
AND GoodsIn.GoodsId = x OR GoodsIn.GoodsId = y ORDER BY GoodsIn.GoodsInId DESC

现在结果是查询出来正确了,可是排序有问题,同一个goodInid的信息可能会分成多条记录
我想要的结果是这样
入库表里面的信息由
GoodsInId GoodId InputTime
1 a 2012
2 aa 2013
3 bb 2012

Good表的信息为
GoodId GoodsName
a A
aa AA
bb BB
想要查询goodsId=a or goodsId=aa 的记录
按理说查询出的结果是
GoodInId GoodId GoodName Inputtime
1 a A 2012
2 aa AA 2012

但是现在的结果查出来是
1 a A 2012
1 aa AA 2012
1 bb BB 2012
2 aa AA 2013
不知道是哪里出了错

我试了一下,把外键删除不查询整个结果就是正确的
展开
 我来答
百度网友1193bb8f7b
2012-07-29 · TA获得超过194个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:275万
展开全部
DISTINCT 在去重复是将重复的行合并,你的GoodsIn 记录中,通一个GoodId会在不同时间都有入库记录,那么,在返回的记录中,GoodId会重复,但是和GoodsInId,InputTime交叉后,这行数据就与其他行不同了,所以不会被合并。
关键是你返回的结果需要的是什么?是入库的最后一条记录?还是说其他的?
请标识你返回结果的意义才能继续分析。
追问
麻烦看问题补充
追答
--用条件or的时候,要括号括起来,否则之前And条件都无效的,所以导致笛卡尔积的处理,注意: (GoodsIn.GoodsId = x OR GoodsIn.GoodsId = y )加括号就可以了
SELECT DISTINCT
GoodsInId,InputTime,GoodsId.GoodsName,GoodsId FROM Goods AS GoodsId, GoodsIn
WHERE GoodsIn.GoodsId=GoodsId.GoodsId AND 1=1
AND (GoodsIn.GoodsId = x OR GoodsIn.GoodsId = y )ORDER BY GoodsIn.GoodsInId DESC
-----补充问题前后表的字段名称不一致,修改时注意一致的就可以了。
My_Widow
2012-07-29 · TA获得超过732个赞
知道小有建树答主
回答量:563
采纳率:0%
帮助的人:481万
展开全部
SELECT g.Goodslnld,g.InputTime,Goodsld.GoodsName,Goodsld.Goodld FROM Goodsln as g
INNER JOIN (SELECT GoodId,GoodsName FROM Goods WHERE GoodId=X OR GoodId=Y)
) AS Goodsld ON g.Goodsld=Goodsld.GoodId
ORDER BY g.Goodslnld
你看你前后问题和补充字段名都不一样·一会Good表 GoodsId 补充里又GoodId
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-29
展开全部
因为是不同时间录入的 GoodsInId,InputTime去掉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wantairl
2012-07-29 · TA获得超过157个赞
知道答主
回答量:484
采纳率:100%
帮助的人:217万
展开全部
你想做嘛?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式