第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

MS Access(Jet / ACE)中的無(wú)表UNION查詢(xún)

MS Access(Jet / ACE)中的無(wú)表UNION查詢(xún)

慕仙森 2019-09-26 14:37:13
這按預(yù)期工作:SELECT "Mike" AS FName這將失敗,并顯示錯(cuò)誤“查詢(xún)輸入必須至少包含一個(gè)表或查詢(xún)”:SELECT "Mike" AS FNameUNION ALLSELECT "John" AS FName這僅僅是Jet / ACE數(shù)據(jù)庫(kù)引擎的怪癖/局限性,還是我缺少某些東西?
查看完整描述

3 回答

?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊

你什么都沒(méi)忽略。Access的數(shù)據(jù)庫(kù)引擎將允許SELECT沒(méi)有FROM數(shù)據(jù)源的單行。但是,如果你想UNIONUNION ALL多個(gè)行,你必須包括一個(gè)FROM......即使你不是從數(shù)據(jù)源中引用的任何字段。

我創(chuàng)建了一個(gè)只有一行的表,并添加了一個(gè)檢查約束以確保它始終只有一行。

Public Sub CreateDualTable()
    Dim strSql As String
    strSql = "CREATE TABLE Dual (id COUNTER CONSTRAINT pkey PRIMARY KEY);"
    Debug.Print strSql
    CurrentProject.Connection.Execute strSql
    strSql = "INSERT INTO Dual (id) VALUES (1);"
    Debug.Print strSql
    CurrentProject.Connection.Execute strSql

    strSql = "ALTER TABLE Dual" & vbNewLine & _
        vbTab & "ADD CONSTRAINT there_can_be_only_one" & vbNewLine & _
        vbTab & "CHECK (" & vbNewLine & _
        vbTab & vbTab & "(SELECT Count(*) FROM Dual) = 1" & vbNewLine & _
        vbTab & vbTab & ");"
    Debug.Print strSql
    CurrentProject.Connection.Execute strSqlEnd Sub

Dual表對(duì)于以下查詢(xún)很有用:

SELECT "foo" AS my_textFROM DualUNION ALLSELECT "bar"FROM Dual;

我見(jiàn)過(guò)的另一種方法是使用SELECT帶有TOP 1WHERE子句的語(yǔ)句,將結(jié)果集限制為單行。

注意檢查約束是隨Jet 4添加的,僅可用于從ADO執(zhí)行的語(yǔ)句。CurrentProject.Connection.Execute strSql之所以有效,CurrentProject.Connection是因?yàn)樗且粋€(gè)ADO對(duì)象。如果嘗試使用DAO執(zhí)行同CurrentDb.Execute一條語(yǔ)句(即從Access查詢(xún)?cè)O(shè)計(jì)器或從Access查詢(xún)?cè)O(shè)計(jì)器執(zhí)行),則會(huì)收到語(yǔ)法錯(cuò)誤,因?yàn)镈AO無(wú)法創(chuàng)建檢查約束。


查看完整回答
反對(duì) 回復(fù) 2019-09-26
?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊

如果您有權(quán)訪問(wèn)某些系統(tǒng)表,則可以通過(guò)以下方式模擬雙重表:

(SELECT COUNT(*) FROM MSysResources) AS DUAL

不幸的是,我不知道任何系統(tǒng)表...

  • 總是可用的,可讀的(并非每個(gè)連接都可以訪問(wèn)MSysObjects)

  • 僅包含一條記錄,例如Oracle DUAL或DB2的記錄SYSIBM.DUAL

所以你會(huì)寫(xiě):

SELECT 'Mike' AS FNameFROM (SELECT COUNT(*) FROM MSysResources) AS DUALUNION ALLSELECT 'John' AS FNameFROM (SELECT COUNT(*) FROM MSysResources) AS DUAL

例如,這就是在jOOQ中實(shí)現(xiàn)為語(yǔ)法元素的內(nèi)容。


查看完整回答
反對(duì) 回復(fù) 2019-09-26
?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊

當(dāng)您限制了對(duì)數(shù)據(jù)庫(kù)的只讀訪問(wèn)(即,您無(wú)法創(chuàng)建新表或訪問(wèn)系統(tǒng)資源)時(shí),這可能會(huì)起作用:

SELECT "Mike" AS FNameFROM (SELECT COUNT(*) FROM anyTable WHERE 1=0) AS dual
  1. anyTable是您找到的第一個(gè)用戶表(我很難想象沒(méi)有用戶表的真實(shí)數(shù)據(jù)庫(kù)!)。

  2. 即使在一張大桌子上,WHERE 1 = 0也應(yīng)該快速返回0計(jì)數(shù)(希望Jet引擎足夠智能以識(shí)別這種瑣碎的情況)。


查看完整回答
反對(duì) 回復(fù) 2019-09-26
  • 3 回答
  • 0 關(guān)注
  • 818 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)