所以我开始学习一些vb.net,并且我有以下的mysql语句来为我的一个表中的列获得一个不同的计数。它一直给我适合语法错误,但几乎所有我读过的东西都表明我拥有的应该是正确的。此外,我把它放到MySQL Workbench中,它工作正常,无论出于什么原因,它只是拒绝在我的代码中工作。Select Count Distinct Syntax,vb.net
Dim sRetrieve As String
Dim numvals As OdbcDataReader
sRetrieve = "SELECT COUNT (DISTINCT defect_code) FROM daily_data WHERE MONTH(date)=" & select_month & " AND YEAR(date)=" & select_year
Dim query_exe As New Odbc.OdbcCommand(sRetrieve, cn)
numvals = query_exe.ExecuteReader()
我一直在敲我的头这一段时间,现在,所以任何告诉我,帮助这有什么错,MySQL的声明将不胜感激。
算出来了,COUNT和第一个之间的空间(这样做是一件非常有趣的事情,它让我久久不能相信,但我想这就是它的原因。大家好。
您可能需要添加周围的参数'select_month'和'select_year'一些报价。另外,你应该使用[参数化查询](http://stackoverflow.com/questions/542510/how-do-i-create -a-parameterized-sql-query-why-should-i)而不是字符串连接。 – jbabey
查询看起来很好。 'select_month'和'select_year'的值(和数据类型)是什么?它是如何“拒绝工作”的?是否有MySQL错误? VB错误? –
在它周围粘贴引号似乎没有办法。 select_month和select_year只是基于用户从表单上的下拉列表中选择的值设置的整数。例如,select_month可能是6,select_year可能是2013. 这是一个MySQL错误: 错误[42000] [MySQL] [ODBC 3.51驱动程序] [mysqld-5.6.11]您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以在'*)FROM(SELECT DISTINCT defect_code FROM daily_data)附近使用正确的语法WHERE MONTH(date)= 6 AND YE'在第1行 – user2498668