函數Min()或Max()可能會破壞記錄的完整性嗎?就拿查詢我最近製作的情況下:可以使用sql函數(如min()或max()破壞記錄的完整性
選擇帳戶,MIN(手機),MIN(chargeid),MIN(locationid)FROM import1 GROUP BY帳戶,電話
有沒有可能我混我現場數據無意中變成新記錄?如果我將一個Min改爲Max,該怎麼辦?如果我選擇了,我可以破壞記錄的完整性嗎?
感謝, 多諾萬
函數Min()或Max()可能會破壞記錄的完整性嗎?就拿查詢我最近製作的情況下:可以使用sql函數(如min()或max()破壞記錄的完整性
選擇帳戶,MIN(手機),MIN(chargeid),MIN(locationid)FROM import1 GROUP BY帳戶,電話
有沒有可能我混我現場數據無意中變成新記錄?如果我將一個Min改爲Max,該怎麼辦?如果我選擇了,我可以破壞記錄的完整性嗎?
感謝, 多諾萬
我相信他的問題是,如果以下數據存在
Account Phone ChargeId LocationId
1 111-1111 6 8
2 111-1111 7 7
2 111-1111 8 6
將其返回2,111-1111, 7,6(來自chargeId(2)的7個和來自LocationId(3)的6個)。
如果這就是你要求的,那麼是的。它會毀了你的結果。
你實際上並沒有改變在查詢數據時,你只選擇或查看它。
除非您執行UPDATE,INSERT或DELETE或調用存儲過程,否則不會更改數據。
確實如此,在這種情況下,選擇正在變成一個全新的數據集。當使用視覺狐狸時,你可以把選擇語句變成一張全新的表格,這就是我擔心的原因。 – Donovan 2010-07-23 01:00:17
我不確定你的意思是破壞記錄的完整性,但調用MIN或MAX函數沒有任何問題。這是一種非常普遍的查詢。
您不應該假設結果集中一行中的所有值都來自原始表中的同一行。這些值可以來自不同的行。例如,如果在你的表中的數據是這樣的:
account phone chargeid locationid 123 456 10 30 123 456 40 20
那麼結果會是這樣:
account phone MIN(chargeid) MIN(locationid) 123 456 10 20
的「10」來自第一行和「20」來自第二排。
此外,您在手機上使用MIN似乎沒有必要。你應該選擇這個領域,因爲它是該組的部分是:
SELECT account, phone, MIN(chargeid), MIN(locationid)
FROM import1
GROUP BY account, phone
這就是爲什麼我試圖使用使用ROW_NUMBER()(來自您以前的問題)建立的主鍵。您是否能夠將數據推送到指定了IDENTITY列的新表中? – 2010-07-23 01:06:42
crud。這就是我所害怕的。 – Donovan 2010-07-23 01:06:53
是的。如果需要,我可以。我可以臨時修改表格以包含行號作爲關鍵字。我將無法將它包含在查詢中,但是我可以在運行select語句之前將表獲取到具有唯一鍵的點。 – Donovan 2010-07-23 01:09:30