CREATE VIEW repair.view_info_bug_PT AS SELECT distinct dbo.tbl_info_bug.*,repair.view_info_plan_N_PT.Product_Type AS Product_Type FROM dbo.tbl_info_bug JOIN repair.view_info_plan_N_PT ON repair.view_info_plan_N_PT.pihao=dbo.tbl_info_bug.pihao
CREATE VIEW repair.view_info_bug_PT AS SELECT a.*,b.Product_Type AS Product_Type FROM dbo.tbl_info_bug a LEFT JOIN (select distinct Product_Type pihao from repair.view_info_plan_N_PT) b ON a.pihao=b.pihao
使用 DISTINCT DISTINCT 是 SUM、AVG 和 COUNT 的可选关键字。如果使用 DISTINCT,那么在计算总和、平均值或计数之前,先消除重复的值。如果使用 DISTINCT 关键字,表达式必须只包含列名。而不能包含算术表达式。以下查询返回商务书籍的平均价格(不包括重复的值):USE pubs SELECT AVG(DISTINCT price) FROM titles WHERE type = 'business'下面是结果集:------------------ 14.64(1 row(s) affected)如果不使用 DISTINCT 关键字,则 AVG 函数将计算出所有商务书名的平均价格:USE pubs SELECT AVG(price) FROM titles WHERE type = 'business下面是结果集:------------------ 13.73(1 row(s) affected)
提个问题distinct 是纪录一模一样的地吗?
还有没有跟好的办法,谢谢
一、left join的连接原理是这样的
1。left的左边的表,拿出一行然后和left右边表的所有行匹配,能匹配上的拿出来
2。然后left左边的表,拿出下一行,进行同样的操作
3。如果left左边的表的某行和left右边表中的所有行,都不匹配,也保留下来,只不过有的列为null
4。根据你的问题,肯定有很多匹配的行
5。当然会有很多的行了。
AS
SELECT a.*,b.Product_Type AS Product_Type
FROM dbo.tbl_info_bug a LEFT JOIN (select distinct Product_Type pihao from repair.view_info_plan_N_PT) b
ON a.pihao=b.pihao
DISTINCT 是 SUM、AVG 和 COUNT 的可选关键字。如果使用 DISTINCT,那么在计算总和、平均值或计数之前,先消除重复的值。如果使用 DISTINCT 关键字,表达式必须只包含列名。而不能包含算术表达式。以下查询返回商务书籍的平均价格(不包括重复的值):USE pubs
SELECT AVG(DISTINCT price)
FROM titles
WHERE type = 'business'下面是结果集:------------------
14.64(1 row(s) affected)如果不使用 DISTINCT 关键字,则 AVG 函数将计算出所有商务书名的平均价格:USE pubs
SELECT AVG(price)
FROM titles
WHERE type = 'business下面是结果集:------------------
13.73(1 row(s) affected)