access sql語句zhong 可以用幾層or和and
access中,sql語句只要邏輯關系正確,無論幾層or和and都是可以的。
如學生表中有以下數據:
要查出一班中,年齡為12或13的人的所有信息,可用如下sql語句:
select * from 學生表 where 班級='一班' and (年齡=12 or 年齡=13)查詢結果:
在上邊語句中(年齡=12 or 年齡=13)必須加括號,否則查詢結果就會出現錯誤:
select * from 學生表 where 班級='一班' and 年齡=12 or 年齡=13錯誤的查詢結果:
access關于SQL語句的分支判斷
case when * * between * and *
else
* between * and *
end
這個條件有點復雜了
當 * * between * and *
否則 要求
* between * and *
換種方式寫的話……
(
( * AND * between * and *
)
OR
( * >= *
AND
* between * and *
)
)
關于access語句和sql語句轉換
首先打開Access軟件,并新建一個空白數據庫。(當然也可以打開之前保存的數據庫)。
軟件會默認開啟一個表名為【表1】的空白表單。
將空白表單表名修改為【測試表】,添加字段和幾行測試數據。
默認軟件工具欄是【開始】工具欄,我們點擊【創建】進入創建工具欄,在工具欄中點擊【查詢設計】。
彈出【顯示表】窗口,點擊【關閉】將該窗口關掉。
這時軟件會進入【設計】工具欄,我們點擊工具欄左側的【SQL視圖】。
【SQL視圖】默認選擇的是【設計視圖】,我們在下拉菜單中選擇【SQL視圖】。
在工具欄下方會自動打開一個查詢窗口,在這里就可以輸入查詢用的SQL語句了。
我們輸入一行標準的SQL查詢語句,查詢在【測試表】中性別為‘女’的數據,然后點擊【運行】。
SQL語句執行完成后,查詢窗口會自動轉換為表視圖,以表格方式顯示查詢到的數據。
sql 語句關于access
首先你多了個WHERE 應該換成AND不知道你的數據庫字段xxlb,sh,reg_type是什么類型的數據???如果是數字,就改成:sql="select top 8 * from sale where xxlb=4 and sh=1 and reg_type=0 and dateandtime 另外你看下dateandtime是不是日期類型,還不行的話,就改下這里:dateandtime 后臺數據庫: [Microsoft Access] 與 [Microsoft Sql Server] 更換之后,ASP代碼應注意要修改的一些地方: [一]連接問題(舉例) [Microsoft Access] constr = "DBQ=c:\data\*; DRIVER={Microsoft Access Driver (*.mdb)}" [Microsoft Sql Server] constr = "DRIVER={SQL Server};SERVER=host;DATABASE=mydata;uid=sa;pwd=" [二]相似函數(舉例) [1]DATEDIFF(datepart, startdate, enddate) 其中“datepart”參數可選項如下: 設置 描述 [Microsoft Access] 年 yyyy 季度 q 月 m 一年的日數 y 日 d 一周的日數 w 周 ww 小時 h 分鐘 n 秒 s [Microsoft Sql Server] year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww hour hh minute mi, n second ss, s millisecond ms 基本上差不多,但注意的是在寫的時候, [Microsoft Access]要加引號,如:datediff('d',enddate,'2004/08/01') [Microsoft Sql Server]則不需要,如:datediff(d,enddate,'2004/08/01') [2][Microsoft Access]中可用如cstr等轉數據類型函數,而 [Microsoft Sql Server]中則用convert或cast函數,如: convert(varchar,[amount])等。 [3][Microsoft Sql Server] 取當前時間用getdate等等。 [三]語句 [Microsoft Sql Server] 可以用 CASE WHEN THEN WHEN THEN 。 ELSE END 語句,而 [Microsoft Access] 不支持。 [Microsoft Access]也不支持between語句 [Microsoft Sql Server]則可以這樣寫: [date] between @date1 and @date2 [四]查詢表 [Microsoft Sql Server] 可三個及以上表join查詢,而 [Microsoft Access] 好像只能兩個表聯接查詢(待權威確認), 而且[Microsoft Sql Server]可用“*=”和“=*”連接符。 [五]除零問題 [Microsoft Access] 在碰到除數為零時,自動丟掉相關記錄,而 [Microsoft Sql Server] 則會報錯,且查詢中止。刪除代碼: [Microsoft Access] 可以這樣寫:delete * from [table] [Microsoft SQL Server] 只能這樣寫:delete from [table] 多*會報錯 當前日期: [Microsoft Access] 用date() [Microsoft SQL Server] 用getdate()如果數據庫可能會更換類型的話,可以 在ASP代碼中加上如這樣: if inStr(constr,"Microsoft Access") > 0 then sqlstr=[Microsoft Access][sql代碼] else sqlstr=[Microsoft Sql Server][sql代碼] end if (constr--連接字符串) 這樣即使改了數據庫,也不用改數據庫查詢更新代碼了。 再加:access中有true、false的字段記錄,而sql里只有smallint,對應如果在access里有“字段名=true”的,在sql里要改成“字段名=1” 網上大部分的免費asp程序使用的是access數據庫。但是access數據庫作為一個中小型的單機數據庫系統,在承擔訪問量、數據量大的網站應用時,往往就不堪重負了。 一般認為,超過50M的access數據庫性能就開始明顯下降,超過100M以后,出錯、運行慢的問題會更加突出。盡管可以如動網7.0以后那樣,從程序的角度盡量優化以圖提高性能,但是不能從根本上解決問題。 這時也許使用微軟的SQL Server數據庫就是最可能的辦法,當然也可以使用其它的如Oracle、MySQL等等,但是作為改寫來說,由于同為微軟的產品,改寫成SQL Server應該是最省力的辦法。 access中不能連續使用多個inner join,對于這類問題,你可以用類似以下的代碼,將多個查詢結果嵌套起來。 select * from (select * from a inner join b on * = *) as c inner join d on * = * 看你的sql,好像是兩層select語句嵌套,你似乎把最后的INNER JOIN Dictionary AS U ON * = *放在外層了。外層是沒有Spec表的。呵呵 使用ACCESS查詢對象是無法一次運行多個SQL語句的,但是通過ACCESS VBA代碼可以實現一次運行多個SQL語句。 下面是具體實現方案; 1)新建一個ACCESS窗體,窗體添加一個命令按鈕; 2)編寫按鈕單擊事件過程 Private Sub Command1_Click()Dim strSql as stringstrSQL="Update Policy SET LatestDueDate=Year(Date()) & '-' & Format(PolicyDate,'mm-dd')" * strSQL '運行第一個更新語句strSQL="UPDATE Policy SET LatestDueDate= DateAdd('yyyy',1,LatestDueDate) WHERE (((Month(Date())-Month(LatestDueDate)) > 6) and(PaymentMode='H'))" * strSQL '運行第二個更新語句 End Sub 跟著點擊該命令按鈕就可以一次執行兩條語句了。 *******不過這里必須指出樓主這種通過UPDATE更新來獲取繳費提醒的辦法絕對是一種非常糟糕的解決方案,其壞處除了你說的,我可以指出N多條!具體就不說了。 ****** 其實要獲取你要獲取保單續期提醒日期,無需分兩步只要一句SELECT語句就能搞定,完全沒必要去更新數據表。 將下列SQL語句保存為一個名為“RenewAlertPolicies的選擇查詢 select PolicyNo,PolicyDate,DateAdd('yyyy',1,PolicyDueDate) as LatestDueDate from Policy where DateDiff('m',PolicyDate, Date()) > 6 order by PolicyDate desc;注意:上面“保單號”字段名是我虛構的,請替換為實際的保單號字段名。 如果不想看太舊的保單,篩選可以用時間段來限制,例如。where DateDiff('m',PolicyDate, Date()) between 7 and 12 。 . 當你要查看需要提示續保的保單列表時,簡單地雙擊該查詢就好了,你可以隨要隨查,非常方便,查詢結果將會展示最新的情況,完全沒必要去考慮如何更新LatestDueDate的問題。 首先你多了個WHERE 應該換成AND 不知道你的數據庫字段xxlb,sh,reg_type是什么類型的數據??? 如果是數字,就改成: sql="select top 8 * from sale where xxlb=4 and sh=1 and reg_type=0 and dateandtime<Dateadd("d",-16,now()) ORDER BY dateandtime DESC" 如果是文本類型你的就不用改。 另外你看下dateandtime是不是日期類型,還不行的話,就改下這里:dateandtime<Dateadd("d",-16,now()) --改成 dateandtime<Dateadd("d",-16,date()) 轉載請注明出處華閱文章網 » accesssql語句and 誰能給出Access和SQLServer中SQL語句對比
ACCESS SQL 語句
Access多條SQL語句可不可以同時執行
sql 語句關于access