ma1111
|
發表於 2011-5-18 11:35 AM |
設計schma時候,有些欄位特性一定會有值,請直接指定NOT NULL,
尤其是KEY Field,
否則app實作時,會多出很多特殊情況
| |
yfan
|
發表於 2011-5-18 06:55 AM |
select A.*
from A
where A.id not in
(
select b.id from B where B.amount>0
)
| |
chourain
|
發表於 2011-4-4 11:49 PM |
引用: akbarchinaman寫到:
借用來問兩個問題:
1. 為什麼要用 Is NULL而不是 = NULL
2. SQL底下的萬用字元到底是%還是*?
1.null這個值,在SQL中算是特殊的資料,不是''(空白)也不是0,是一個空的欄位型態,也就是說,這個欄位資料是不存在的,所以不能用=或其他方式來比對出來,所以用 is null 或isnull() 內建的判斷才能比對.
2.就自己所了解%這個是用在做where判斷是的萬用字元.如
where aaa like '%tw' 表示 找出所有aaa欄位 最後二個字是 tw的資料如 12tw,abctw,tw都會給比對出來.
where aaa like '%tw%' 表示 找出所有aaa欄位 只要有tw這二個字的資料如 12tw,abctw,tw123,tw,abtwsdfasdf1都會給比對出來.
而* 是用來設定要顯示所有資料表中的欄位
官方說明:指定應該傳回 FROM 子句中所有資料表和檢視的所有資料行
select * from abc
傳回所有abc這個資料表的欄位資料
所以*和%在用法上是不同的.
例
select a.*,b.欄位1 from a
inner join b on a.欄位1=b.欄位1 where b.欄位1 like '%tw'
這是說.傳回.所以a資料表的欄位資料及b資料表的欄位1資料,並在資料中篩選出符合b.欄位1中最後二個字是tw的所有資料
| |
akbarchinaman
|
發表於 2011-4-2 03:35 PM |
借用來問兩個問題:
1. 為什麼要用 Is NULL而不是 = NULL
2. SQL底下的萬用字元到底是%還是*?
| |
bobbook
|
發表於 2011-3-29 10:55 AM |
感謝呀
我終於找到了
關鍵在於LEFT JOIN 以及TableB.訂單編號 ISNULL
目前在View底下已經可以找到正確的資料了
SQL
SELECT dbo.TableA.*,dbo.TableB.*
FROM dbo.TableA LEFT OUTER JOIN dbo.TableB ON dbo.TableA.訂單編號 = dbo.TableB.訂單編號
WHERE (dbo.TableB.訂單編號 IS NULL)
總算可以把萬惡的不繳訂金以及租金的成員抓出來了
感謝各位的提醒以及解惑
TIPS
left join: 返回「表名1」的全部行,對於「表名2」中,不滿足on條件的記錄用空值替換。
rigth join: 返回「表名2」的全部行,對於「表名1」中,不滿足on條件的記錄用空值替換。
設定指定欄位 ISNULL查詢即可
[bobbook 在 2011-3-29 10:59 AM 作了最後編輯]
| |
dayi
|
發表於 2011-3-28 10:55 PM |
這很簡單啊
提示
用left, right
不要用inner
| |
aaronwang
|
發表於 2011-3-28 10:16 PM |
應該是 TableB.收費紀錄 is NULL 不是 TableB.收費紀錄 = NULL
| |
vivi123456
|
發表於 2011-3-28 08:00 PM |
試試看吧
SELECT dbo.TableA.*, dbo.TableB.*
FROM dbo.TableA
INNER JOIN dbo.TableB ON dbo.TableA.訂單編號 = dbo.TableB.訂單編號
WHERE dbo.TableA.訂單編號 = 條件
AND dbo.TableA.數量 = 條件
AND dbo.TableA.下訂日期 = 條件值
AND ISNULL(dbo.TableB.收費紀錄,'') = ''
| |
bobbook
|
發表於 2011-3-28 05:43 PM |
引用: shinnuei寫到:
where a.訂單編號 = 條件值 and a.數量 = 條件值 and a.下訂日期 = 條件值
AND B.收費紀錄 = NULL
不知道對不對
這個我試過了
得到的結果都是NULL
最主要是因為"B.收費紀錄 = NULL"
原因是大頭在作系統分析的時候設定
產生訂單不會對TableB有影響
除非交訂金或交租金
哈哈哈哈哈哈哈哈哈哈哈哈哈哈 淚流滿面中......
另外我有嘗試使用
[SQL 語句 1]
MINUS
[SQL 語句 2]
結果還是被打槍
SQL 2008里面把它當作兩個查詢條件來看
快哭死了
目前在跟大頭裝死......
[bobbook 在 2011-3-28 05:47 PM 作了最後編輯]
| |
shinnuei
|
發表於 2011-3-28 05:39 PM |
where a.訂單編號 = 條件值 and a.數量 = 條件值 and a.下訂日期 = 條件值
AND B.收費紀錄 = NULL
不知道對不對
| |