怎么選擇中除一列外的所有列,相信很多沒(méi)有經(jīng)驗的人對此束手無(wú)策,為此本文總結了問(wèn)題出現的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
SQL通過(guò)SELECT *(SELECT ALL)子句使選擇表中的所有字段變得非常簡(jiǎn)單。不幸的是,一旦您從列表中刪除了一列,SELECT ALL語(yǔ)句就會(huì )消失。寫(xiě)出每個(gè)列的名稱(chēng)很快就會(huì )變得乏味,尤其是當您碰巧要處理包含許多列的表時(shí)。如果我們可以選擇除一列之外的每一列——通過(guò)排除而不是包含進(jìn)行選擇,那會(huì )怎么樣呢?可以辦到。實(shí)際上,有兩種方法可以做到這一點(diǎn)——一種簡(jiǎn)單,另一種稍微簡(jiǎn)單一些。
下面將詳細介紹兩種方法:
方法1:使用INFORMATION_SCHEMA.COLUMNS表
INFORMATION_SCHEMA提供對數據庫元數據、有關(guān)MySQL的信息(例如數據庫或表的名稱(chēng)、列的數據類(lèi)型或訪(fǎng)問(wèn)權限)的訪(fǎng)問(wèn)。更具體地說(shuō),COLUMNS表提供有關(guān)表中列的信息,包括列名。
Sakila示例數據庫的film表中包含的列數最多為13。
這是我們使用INFORMATION_SCHEMA.COLUMNS表來(lái)獲取除original_language_id列以外的所有列的方式:
GROUP_CONCAT函數將所有列名稱(chēng)連接到一個(gè)逗號分隔的字符串中。然后,我們可以將字段替換為空字符串!
執行查詢(xún)
要克服的一個(gè)小障礙是MySQL查詢(xún)不能接受動(dòng)態(tài)列名。解決方案是采用準備好的聲明。下面是設置@sql變量、準備語(yǔ)句并執行的代碼:
在查詢(xún)中插入列、表和模式信息會(huì )產(chǎn)生我們想要的結果:
方法2:使用Navicat
Navicat等數據庫開(kāi)發(fā)和管理工具的主要目標是提高生產(chǎn)力。因此,Navicat旨在使您的工作盡可能快速和輕松。為此,借助“代碼完成”和可自定義的代碼段,SQL編輯器可幫助您更快地編寫(xiě)代碼,這些代碼段可為關(guān)鍵字提供建議,并消除重復代碼。如果這還不夠的話(huà),Navicat還提供了一個(gè)稱(chēng)為Query Builder的有用工具來(lái)可視化地構建查詢(xún)。它使您僅使用SQL的一點(diǎn)點(diǎn)知識就可以創(chuàng )建和編輯查詢(xún)。雖然Query Builder主要銷(xiāo)售給更多的新手程序員,但是精通SQL的人仍然可以從Query Builder中完成某些任務(wù)。這樣的任務(wù)之一就是選擇列。
在查詢(xún)生成器中,表名稱(chēng)旁邊有一個(gè)復選框,用于選擇其所有列。如果單擊它,則可以簡(jiǎn)單地取消選中original_language_id字段以將其從列列表中刪除:
單擊確定按鈕,然后關(guān)閉對話(huà)框并將SQL代碼添加到編輯器中:
與手工編寫(xiě)代碼相比,使用查詢(xún)生成器創(chuàng )建查詢(xún)具有一些優(yōu)勢:
它最大程度地減少輸入錯誤
它生成易于閱讀的格式化SQL
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站