可以使用诸如min()或max()之类的sql函数来破坏记录的完整性

时间:2010-07-23 00:53:15

标签: sql record integrity

Min()或Max()等函数是否可能破坏记录的完整性?以我最近制作的查询为例:

SELECT帐户,MIN(电话),MIN(chargeid),MIN(locationid)FROM import1 GROUP BY帐户,电话

我是否有机会无意中将我的现场数据混合到新记录中?如果我将一分钟改为最大值怎么办?如果我选择的话,我可以破坏记录的完整性吗?

谢谢, 多诺万

3 个答案:

答案 0 :(得分:7)

您实际上并未改变该查询中的数据,您只是选择或查看它。

除非您执行UPDATE,INSERT或DELETE或调用存储过程,否则不会更改数据。

答案 1 :(得分:3)

我不确定破坏记录完整性是什么意思,但调用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

答案 2 :(得分:1)

我相信他的问题是,如果存在以下数据

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)。

如果这就是你所要求的,那么是的。它会破坏你的结果。