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的列零件号的主键