诸如 Min() 或 Max() 之类的函数可能会破坏记录的完整性吗?以我最近制作的查询为例:
SELECT account, MIN(phone), MIN(chargeid), MIN(locationid) FROM import1 GROUP BY account, phone
我是否有可能无意中将我的现场数据混合到新记录中?如果我将 1 Min 更改为 Max 会怎样?如果我选择这样做,我可以破坏记录的完整性吗?
谢谢,多诺万
您实际上并没有更改该查询中的数据,您只是在选择或查看它。
除非您执行 UPDATE、INSERT 或 DELETE 或调用存储过程,否则您不会更改数据。
我不确定您所说的破坏记录完整性是什么意思,但调用 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
我相信他的问题是,如果存在以下数据
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)。
如果这就是你要问的,那么是的。它会破坏你的结果。