1 group by 用法
group by 是用来分组的,当使用group by时要注意以下几点:
1>select后面不能有* ,如果需要全部列出需要一项项写出来
如:SELECT HJFZC.SP_ID, HJFZC.SPCODE, HJFZC.BARCODE,HJFZC.ZL
而不能写成SELECT HJFZC.*
2>group by 后面不能有函数,而且所有SELECT后面的非函数列都要在group by后面列出
如:GROUP BY HJFZC.ZL, HJFZC.SP_ID, HJFZC.SPCODE, HJFZC.BARCODE
2 order by用法
order by是用来排序的,默认是ase,desc是表示降序。当前面的group by时使用就要注意了:
1>当分组和排序不是同一列时,要先写上group by 的列再写上要排序的列。
ORDER BY HJFZC.ZL, HJFZC.XSJE DESC;
2>order by 后面不能有列的别名。
SELECT HJFMX.ZL, HJFMX.ZLNAME, Sum(HJFMX.XSJE) AS ZJE, Sum(HJFMX.ML) AS ZML, (ZML/ZJE) AS PJMLL
FROM HJFMX
WHERE (((HJFMX.DL)<>"03"))
GROUP BY HJFMX.ZL, HJFMX.ZLNAME
ORDER BY Sum(HJFMX.ML)/Sum(HJFMX.XSJE) DESC;
如果写成ORDER BY PJMLL DESC是不行的。
3 多表关联
1)查出HJFMX表中SP_ID包含在TPSPID的SP_ID列所有记录==方法一
SELECT HJFMX.*
FROM HJFMX INNER JOIN TPSPID ON HJFMX.SP_ID=TPSPID.SP_ID
WHERE (((HJFMX.DL)<>"03") AND ((HJFMX.ZLSPBJ)=0))
ORDER BY HJFMX.XSJE DESC;
2)查出HJFMX表中SP_ID包含在TPSPID的SP_ID列所有记录==方法二
SELECT HJFMX.*
FROM HJFMX, TPSPID
WHERE HJFMX.SP_ID=TPSPID.SP_ID
ORDER BY HJFMX.XSJE DESC;
3)查出HJFMX表中SP_ID不包含在TPSPID的SP_ID列所有记录
SELECT HJFMX.*
FROM HJFMX
WHERE HJFMX.SP_ID NOT IN (SELECT TPSPID.SP_ID FROM TPSPID)
ORDER BY HJFMX.XSJE DESC;