Tag: sql

SQL Server SELECT最后N行

这是一个已知的问题,但我find的最好的解决scheme是这样的: SELECT TOP N * FROM MyTable ORDER BY Id DESC 我有一个有很多行的表。 使用该查询不是一个可能性,因为它需要很多时间。 那么我怎样才能select最后N行而不使用ORDER BY呢? 编辑 对不起, 这个重复的问题

Sql查询分组按天

我想列出所有的销售,并按天分组。 Sales (saleID INT, amount INT, created DATETIME) 更新我正在使用SQL Server 2005

如何使用SQL重命名数据库表中的列?

如果我想简单地使用SQL在一个SQL数据库中重命名列(不改变它的types或约束,只是它的名字),我该怎么做? 或者是不可能的? 这是任何声称支持SQL的数据库,我只是在寻找一个特定于SQL的查询,而不pipe实际的数据库实现如何。

C#SQL Server – 将列表传递给存储过程

我从我的C#代码调用SQL Server存储过程: using (SqlConnection conn = new SqlConnection(connstring)) { conn.Open(); using (SqlCommand cmd = new SqlCommand("InsertQuerySPROC", conn)) { cmd.CommandType = CommandType.StoredProcedure; var STableParameter = cmd.Parameters.AddWithValue("@QueryTable", QueryTable); var NDistanceParameter = cmd.Parameters.AddWithValue("@NDistanceThreshold", NDistanceThreshold); var RDistanceParameter = cmd.Parameters.AddWithValue(@"RDistanceThreshold", RDistanceThreshold); STableParameter .SqlDbType = SqlDbType.Structured; NDistanceParameter.SqlDbType = SqlDbType.Int; RDistanceParameter.SqlDbType = SqlDbType.Int; // Execute the query SqlDataReader QueryReader = cmd.ExecuteReader(); 我存储的proc是相当标准的,但与QueryTable进行连接(因此需要使用存储过程)。 […]

SQL删除与INNER JOIN

有2个表, spawnlist和npc ,我需要从spawnlsit删除数据。 npc_templateid = n.idTemplate是唯一的“连接”表。 我已经试过这个脚本,但它不起作用。 我试过这个: DELETE s FROM spawnlist s INNER JOIN npc n ON s.npc_templateid = n.idTemplate WHERE (n.type = "monster");

T-SQL datetime使用函数四舍五入到最接近的分钟和最近的小时数

在SQL Server 2008中,我希望datetime列四舍五入到最近的小时和最近的分钟,最好在2008年的现有function。 对于此列值2007-09-22 15:07:38.850 ,输出将如下所示: 2007-09-22 15:08 — nearest minute 2007-09-22 15 — nearest hour

报表完成前,最大recursion100已经耗尽

我不断收到此查询最大recursion错误。 起初我以为这是因为一个null被返回,然后它会尝试匹配导致错误的空值,然而,我重写了我的查询,所以空值不返回,错误仍然发生。 重写这个函数的最好方法是什么,这样就不会发生错误 WITH EmployeeTree AS ( SELECT EMP_SRC_ID_NR Id, USR_ACV_DIR_ID_TE Uuid, CASE Employees.APV_MGR_EMP_ID WHEN Null THEN '0' ELSE Employees.APV_MGR_EMP_ID END as ApprovalManagerId FROM dbo.[tEmployees] as Employees WITH (NOLOCK) WHERE APV_MGR_EMP_ID = @Id and Employees.APV_MGR_EMP_ID is not null and Employees.EMP_SRC_ID_NR is not null UNION ALL SELECT EMP_SRC_ID_NR Id, USR_ACV_DIR_ID_TE Uuid, CASE Employees.UPS_ACP_EMP_NR WHEN Null THEN […]

用于查找count> 1的logging的SQL查询

我有一个名为PAYMENT的表。 在这个表格中,我有一个用户ID,一个帐号,一个邮政编码和一个date。 我想find所有用户每天有多个支付相同帐号的所有logging。 更新:此外,应该有一个filter,而不是只计算其邮编不同的logging。 这是表格的样子: | user_id | account_no | zip | date| | 1 | 123 | 55555 | 12-DEC-09 | | 1 | 123 | 66666 | 12-DEC-09 | | 1 | 123 | 55555 | 13-DEC-09 | | 2 | 456 | 77777 | 14-DEC-09 | | 2 | 456 | 77777 […]

在JDBC中处理DATETIME的值0000-00-00 00:00:00

如果我尝试做,我会得到一个exception(见下文) resultset.getString("add_date"); 对于包含DATETIME值为0000-00-00 00:00:00(DATETIME的准空值)的MySQL数据库的JDBC连接,尽pipe我只是试图以stringforms获取该值,而不是目的。 我这样做了 SELECT CAST(add_date AS CHAR) as add_date 哪个工作,但似乎很傻…有没有更好的方法来做到这一点? 我的意思是,我只想要原始的DATETIMEstring,所以我可以自己parsing它。 注意:这里是0000进来的地方:(来自http://dev.mysql.com/doc/refman/5.0/en/datetime.html ) 非法的DATETIME,DATE或TIMESTAMP值将转换为相应types(“0000-00-00 00:00:00”或“0000-00-00”)的“零”值。 具体的例外是这一个: SQLException: Cannot convert value '0000-00-00 00:00:00' from column 5 to TIMESTAMP. SQLState: S1009 VendorError: 0 java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 5 to TIMESTAMP. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926) at com.mysql.jdbc.ResultSetImpl.getTimestampFromString(ResultSetImpl.java:6343) at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5670) at […]

PreparedStatement如何避免或防止SQL注入?

我知道PreparedStatements避免/阻止SQL注入。 它是如何做到的? 使用PreparedStatements构造的最终forms查询将是一个string还是其他?