一个简单的SQL问题。(30分)

  • 主题发起人 主题发起人 bryantd
  • 开始时间 开始时间
B

bryantd

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个表:名字叫Phones(PhoneNumber, FileName)
我想统计表中PhoneNumber的重复次数,写得SQL:
SQLStr := 'select PhoneNumber, count(PhoneNumber) as Total, FileName from Phones where FileName = ''' + FileName + ''' group by PhoneNumber having count(PhoneNumber) > 1';
ADOQuery.SQL.Add(SQLStr);
ADOQuery.Open;

执行的时候总是报错:试图执行的查询中不包含作为合计函数一部分的特定表达式'FileName'。请问这是怎么回事?
是我的SQL语句写错了??
 
是错了:
'select PhoneNumber, count(PhoneNumber) as Total, FileName from Phones where FileName = ''' + FileName + ''' group by PhoneNumber,FileName having count(PhoneNumber) > 1'
不行去掉FileName选择字段,因为你在条件中不是已经限定FileName的值了
 
group by 表示分组,
而你所引用的FieldName并没有使用聚合函数。

可以尝试使用类似:Max,First,Last等聚合函数
SQLStr := 'select PhoneNumber, count(PhoneNumber) as Total, Max(FileName) from Phones where FileName = ''' + FileName + ''' group by PhoneNumber having count(PhoneNumber) > 1'
 
SQL := 'select PhoneNumber,count(PhoneNumber) as PhoneNumber
from Phones
where FileName = ''' + FileName + '''
group by PhoneNumber
having count(PhoneNumber)>1'
 
后退
顶部