Sql server 用于删除重复行但显示单行的查询

Sql server 用于删除重复行但显示单行的查询,sql-server,sql-server-2014,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 结果: 零件号说明制造商成本价 NT321空

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

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 
结果:

零件号说明制造商成本价 NT321空值87665 NT321空值2957 NT321空值150 NT321空值67895 NT321空值5000 NT321空值5000 NT321空值459 NT321空值459 NT321空值45 NT321空值45 NT321空值45 NT321空值45 德莫雷87665 德摩尔2957 德摩尔150 德莫雷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克鲁克瓦布科2957 345 CRUNK WABCO 150 345克鲁克瓦布科67895 345克鲁克瓦布科5000 345克鲁克瓦布科5000 345克鲁克瓦布科459 345克鲁克瓦布科459 345克鲁克瓦布科45 345克鲁克瓦布科45 345克鲁克瓦布科45 345克鲁克瓦布科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 TRT fdfd FDF 87665 TRT fdfdf 2957 TRT fdfd FDF 150 TRT fdfd FDF 67895 TRT fdfdf 5000 TRT fdfdf 5000 TRT fdfd FDF 459 TRT fdfd FDF 459 TRT fdfd FDF 45 TRT fdfd FDF 45 TRT fdfd FDF 45 TRT fdfd FDF 45 TX900 FR零位87665 TX900 FR NULL 2957 TX900 FR零位150 TX900 FR NULL 67895 TX900 FR NULL 5000 TX900 FR NULL 5000 TX900 FR零位459 TX900 FR零位459 TX900 FR零位45 TX900 FR零位45 TX900 FR零位45 TX900 FR零位45 26 gdrn opiyo 87665 26 gdrn opiyo 2957

1台笔记本电脑microsoft 87665 1台笔记本电脑microsoft 2957 1台笔记本电脑microsoft 150 1台笔记本电脑microsoft 67895 1台笔记本电脑microsoft 5000 1台笔记本电脑microsoft 5000 1台笔记本电脑microsoft 459 1台笔记本电脑microsoft 459 1台笔记本电脑microsoft 45 1台笔记本电脑microsoft 45 1台笔记本电脑microsoft 45 1台笔记本电脑microsoft 45 23笔记本电脑microsoft 87665 23笔记本电脑微软2957 23笔记本电脑微软150 23笔记本电脑microsoft 67895 23笔记本电脑微软5000 23笔记本电脑微软5000 23笔记本电脑微软459 23笔记本电脑微软459 23笔记本电脑微软45 23笔记本电脑微软45 23笔记本电脑微软45 23笔记本电脑微软45 567原件holly 87665 567原件霍莉2957 567原件holly 150 567原件霍莉67895 567原件holly 5000 567原件holly 5000 567原件holly 459 567原件holly 459 567原件holly 45 567原件holly 45 567原件holly 45 567原件holly 45 2台ibm 87665 2台ibm 2957 2台ibm 150 2台ibm 67895 2台ibm 5000 2台ibm 5000 2台ibm 459 2台ibm 459 2台ibm 45 2台ibm 45 2台ibm 45 2台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根人87665 347根人2957 347根人150 347根人67895 347根人5000 347根人5000 347根人459 347根人459 347根人45 347根人45 347根人45 347根人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    
但这只显示一行,我希望显示所有行,但不显示重复行。结果如下:

零件号说明制造商成本价
NT321 NULL 87665

在第一个示例中,您得到两个表的笛卡尔积,因为您没有定义任何联接条件,而在第二个示例中,您定义了一个内部联接条件,该条件将结果集限制为两个表中的那些项。可能FM_价目表中缺少产品

尝试将内部联接更改为左联接,以包括来自t的所有产品 即使另一个表中没有相应的行,也会显示OM_ITEM_主表


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

您的问题是什么?我在该数据中没有看到NT321。您没有where子句来过滤行或任何类型的分组,所以join肯定有问题。将其更改为左连接,以查看您的行是否返回。谢谢,但是costprice列的结果为空。我该如何处理?为什么感谢左连接使其工作,尽管它没有拉动成本价格列?知道我该如何处理吗?谢谢,但是costprice列的结果为空。如果该列为空,我该如何处理?@jijicodernull这是因为联接表中没有匹配的值。如果你认为应该有,也许你加入了错误的键,但我真的不能说。这是否意味着我需要创建另一个列成本价格的外键,以匹配表om\U item\U master的列零件号的主键