1

诸如 Min() 或 Max() 之类的函数可能会破坏记录的完整性吗?以我最近制作的查询为例:

SELECT account, MIN(phone), MIN(chargeid), MIN(locationid) FROM import1 GROUP BY account, phone

我是否有可能无意中将我的现场数据混合到新记录中?如果我将 1 Min 更改为 Max 会怎样?如果我选择这样做,我可以破坏记录的完整性吗?

谢谢,多诺万

4

3 回答 3

7

您实际上并没有更改该查询中的数据,您只是在选择或查看它。

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

于 2010-07-23T00:56:21.463 回答
3

我不确定您所说的破坏记录完整性是什么意思,但调用 MIN 或 MAX 函数没有任何问题。这是一种非常常见的查询。

您不应假设结果集中一行中的所有值都来自原始表中的同一行。这些值可以来自不同的行。例如,如果您表中的数据是这样的:

账号电话chargeid locationid
123 456 10 30
123 456 40 20

然后结果将是这样的:

帐号电话 MIN(chargeid) MIN(locationid)
123 456 10 20

“10”来自第一行,“20”来自第二行。

此外,您在电话上使用 MIN 似乎没有必要。您应该只选择此字段,因为它是该组的一部分:

SELECT account, phone, MIN(chargeid), MIN(locationid)
FROM import1
GROUP BY account, phone
于 2010-07-23T00:57:21.603 回答
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)。

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

于 2010-07-23T01:03:43.500 回答