有2張表:
A
id 1 name 1a
id 2 name 2a
id 3 name 3a
id 4 name 4a
id 5 name 5a
B
id 1 name 1b
id 2 name 2b
id 3 name 3b
id 4 name 4b
id 5 name 5b
現在把A、B表的數據聯合起來再篩選出想要的。
1)、查出字段name中不包含'a'字符的數據。
select * a
union
select * b
where name not like '%a%'
看似上面的寫法不錯,其實結果是錯誤的,查出的結果是a、b表的所有數據,並不是想得到的結果。但把第一個SELECT的表名和第二個表名換個位置,就是希望的結果。
select * b
union
select * a
where name not like '%a%'
通過這樣的結果分析出,每次在like查找之前都已經把地一個表的數據查出來了,並沒有對第一個表進行篩選,所以導致上面2次查詢結果不一樣。
正確的SQL語句寫法是:
select * from
(
select * a
union
select * b
) as #temp
where name not like '%a%'
這樣結果纔是最正確。
SQL基礎(1)----union和like的合用出現的問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
SQL基礎語句+說明
jimodushi
2018-08-27 09:35:45
inno setup下SQL數據庫靜默安裝問題與解決方案
太平洋渔业资源管理局
2018-08-27 07:34:53
SQL 中union 和union all的用法及其效率對比
hzj170
2018-08-26 00:43:45
sql cast、 convert、QUOTENAME、exec 函數學習記錄
hzj170
2018-08-26 00:43:43
sql中如何查詢數據庫表等信息
hzj170
2018-08-26 00:42:35
sql2005穩定版本(1.74G)
wolfxin2010
2018-08-25 14:03:54
海量數據庫的查詢優化及分頁算法方案
zhouhaihe
2018-08-24 20:44:32
SQL Server 2005 系統要求(轉載)
zhouhaihe
2018-08-24 20:44:26
利用SQL 2005 CTE處理樹型數據(ZT)
zhouhaihe
2018-08-24 20:44:26
還原數據庫,獲得獨佔訪問權
tedy
2018-08-24 18:32:34
用觸發器生成SQL Server2000數據表的操作日誌
seanxiao
2018-08-24 15:15:45
將身份證號由15位轉換爲18位的函數
seanxiao
2018-08-24 15:15:45
建立SQL2005警告和給操作員發送email通知
seanxiao
2018-08-24 15:15:38
查找某個字段在整個數據出現的表
knife_yu
2018-08-23 03:18:16
asp連接sql2000、sql2005、sql2008、access數據庫連接字串
knife_yu
2018-08-23 03:18:15