查询以删除重复的行,但显示单行

时间:2015-04-04 14:19:48

标签: sql-server sql-server-2014

我有以下查询给了我重复行的结果,这不是我想要的

SELECT 
 OM_ITEM_MASTER.part_no PARTNO,
 item_description DESCRIPTION,
 item_manufacturer MANUFACTURER,
 FM_PRICE_LIST.cost_price COSTPRICE 
FROM OM_ITEM_MASTER, FM_PRICE_LIST 
ORDER BY item_description 

结果:

PARTNO描述制造商COSTPRICE NT321 NULL NULL 87665 NT321 NULL NULL 2957 NT321 NULL NULL 150 NT321 NULL NULL 67895 NT321 NULL NULL 5000 NT321 NULL NULL 5000 NT321 NULL NULL 459 NT321 NULL NULL 459 NT321 NULL NULL 45 NT321 NULL NULL 45 NT321 NULL NULL 45 NT321 NULL NULL 45 demore 87665 德莫尔2957 德莫尔150 demore 67895 德莫尔5000 德莫尔5000 德莫尔459 德莫尔459 德莫尔45 德莫尔45 德莫尔45 德莫尔45 4565安妮球87665 4565安妮球2957 4565安妮球150 4565安妮球67895 4565安妮球5000 4565安妮球5000 4565安妮球459 4565安妮球459 4565个安妮球45 4565个安妮球45 4565个安妮球45 4565个安妮球45 345 CRUNK WABCO 87665 345 CRUNK WABCO 2957 345 CRUNK WABCO 150 345 CRUNK WABCO 67895 345 CRUNK WABCO 5000 345 CRUNK WABCO 5000 345 CRUNK WABCO 459 345 CRUNK WABCO 459 345 CRUNK WABCO 45 345 CRUNK WABCO 45 345 CRUNK WABCO 45 345 CRUNK WABCO 45 24桌面ibm 87665 24桌面ibm 2957 24桌面ibm 150 24桌面ibm 67895 24桌面ibm 5000 24桌面ibm 5000 24桌面ibm 459 24桌面ibm 459 24桌面ibm 45 24桌面ibm 45 24桌面ibm 45 24桌面ibm 45 trtrt fdfd fdfdf 87665 trtrt fdfd fdfdf 2957 trtrt fdfd fdfdf 150 trtrt fdfd fdfdf 67895 trtrt fdfd fdfdf 5000 trtrt fdfd fdfdf 5000 trtrt fdfd fdfdf 459 trtrt fdfd fdfdf 459 trtrt fdfd fdfdf 45 trtrt fdfd fdfdf 45 trtrt fdfd fdfdf 45 trtrt fdfd fdfdf 45 TX900 FR NULL 87665 TX900 FR NULL 2957 TX900 FR NULL 150 TX900 FR NULL 67895 TX900 FR NULL 5000 TX900 FR NULL 5000 TX900 FR NULL 459 TX900 FR NULL 459 TX900 FR NULL 45 TX900 FR NULL 45 TX900 FR NULL 45 TX900 FR NULL 45 26 gdrn opiyo 87665 26 gdrn opiyo 2957

1台笔记本电脑微软87665 1笔记本电脑微软2957 1台笔记本电脑微软150 1台笔记本电脑微软67895 1台笔记本电脑microsoft 5000 1台笔记本电脑microsoft 5000 1台笔记本电脑微软459 1台笔记本电脑微软459 1笔记本电脑微软45 1笔记本电脑微软45 1笔记本电脑微软45 1笔记本电脑微软45 23笔记本电脑微软87665 23笔记本电脑微软2957 23笔记本电脑微软150 23笔记本电脑微软67895 23笔记本电脑microsoft 5000 23笔记本电脑microsoft 5000 23笔记本电脑微软459 23笔记本电脑微软459 23笔记本电脑微软45 23笔记本电脑微软45 23笔记本电脑微软45 23笔记本电脑微软45 567原件冬青87665 567原件冬青2957 567原件冬青150 567原件冬青67895 567原件冬青5000 567原件冬青5000 567原件冬青459 567原件冬青459 567原件冬青45 567原件冬青45 567原件冬青45 567原件冬青45 2台ibm 87665 2台ibm 2957 2 pc ibm 150 2台ibm 67895 2台ibm 5000 2台ibm 5000 2台ibm 459 2台ibm 459 2 pc ibm 45 2 pc ibm 45 2 pc ibm 45 2 pc ibm 45 123 qwe asd 87665 123 qwe asd 2957 123 qwe asd 150 123 qwe asd 67895 123 qwe asd 5000 123 qwe asd 5000 123 qwe asd 459 123 qwe asd 459 123 qwe asd 45 123 qwe asd 45 123 qwe asd 45 123 qwe asd 45 347 ROOT MAN 87665 347 ROOT MAN 2957 347 ROOT MAN 150 347 ROOT MAN 67895 347 ROOT MAN 5000 347 ROOT MAN 5000 347 ROOT MAN 459 347 ROOT MAN 459 347 ROOT MAN 45 347 ROOT MAN 45 347 ROOT MAN 45 347 ROOT MAN 45 rt56 wer dfgg 87665 rt56 wer dfgg 2957 rt56 wer dfgg 150 rt56 wer dfgg 67895 rt56 wer dfgg 5000 rt56 wer dfgg 5000 rt56 wer dfgg 459 rt56 wer dfgg 459 rt56 wer dfgg 45 rt56 wer dfgg 45 rt56 wer dfgg 45 rt56 wer dfgg 45

然后我对查询进行了以下更改

SELECT distinct 
 OM_ITEM_MASTER.part_no PARTNO,
 item_description DESCRIPTION,
 item_manufacturer MANUFACTURER,
 FM_PRICE_LIST.cost_price COSTPRICE
FROM OM_ITEM_MASTER 
inner join FM_PRICE_LIST on OM_ITEM_MASTER.[PART_NO] = FM_PRICE_LIST.[PART_NO]  
order by ITEM_DESCRIPTION    

但是这只显示一行,我希望显示所有行但不重复。结果如下:

PARTNO描述制造商COSTPRICE NT321 NULL NULL 87665

1 个答案:

答案 0 :(得分:0)

在第一个示例中,您正在获取两个表的笛卡尔积,因为您尚未定义任何连接条件,而在第二个示例中,您已定义了一个内部连接条件,该条件将结果集限制为两个中存在的项表。也许FM_PRICE_LIST表中缺少产品。

尝试将内部联接更改为左联接以包含OM_ITEM_MASTER表中的所有产品,即使其他表中没有对应的行也是如此。

此外,您的示例数据与有点令人困惑的查询不匹配。

相关问题