Questions tagged «sql»

结构化查询语言(SQL)是用于查询数据库的语言。问题应包括代码示例,表结构,示例数据以及正在使用的DBMS实现的标签(例如MySQL,PostgreSQL,Oracle,MS SQL Server,IBM DB2等)。如果您的问题仅涉及特定的DBMS(使用特定的扩展名/功能),请改用该DBMS的标签。使用SQL标记的问题的答案应使用ISO / IEC标准SQL。

4
选择其他表中不存在的行
我有两个postgresql表: table name column names ----------- ------------------------ login_log ip | etc. ip_location ip | location | hostname | etc. 我想获取login_log没有行的每个IP地址ip_location。 我尝试了此查询,但它引发了语法错误。 SELECT login_log.ip FROM login_log WHERE NOT EXIST (SELECT ip_location.ip FROM ip_location WHERE login_log.ip = ip_location.ip) ERROR: syntax error at or near "SELECT" LINE 3: WHERE NOT EXIST (SELECT ip_location.ip` …

9
准备好的语句如何防止SQL注入攻击?
准备好的语句如何帮助我们防止SQL注入攻击? 维基百科说: 准备好的语句可以抵御SQL注入,因为稍后需要使用其他协议传输的参数值不需要正确地转义。如果原始语句模板不是从外部输入派生的,则不会发生SQL注入。 我不太清楚原因。用简单的英语和一些例子,简单的解释是什么?


6
SQL或TSQL Turing完成了吗?
这是今天在办公室提出的。我没有做这种事情的计划,但是理论上您可以用SQL编写编译器吗?乍一看,对我来说似乎是完整的,尽管对于许多类型的问题而言非常麻烦。 如果尚未完成,它将需要什么? 注意:我不想做任何事情,例如用SQL编写编译器,我知道这样做是很愚蠢的,因此,如果我们能够避免这种讨论,我将不胜感激。

12
标记的数据库设计
您如何设计数据库以支持以下标记功能: 项目可以具有大量标签 搜索带有给定标签集的所有项目必须快速(这些项目必须具有ALL标记,因此这是AND搜索,而不是OR搜索) 创建/写入项目可能较慢,无法快速查找/阅读 理想情况下,应使用单个SQL语句对(至少)带有一组n个给定标签的所有标签进行查找。由于要搜索的标签数量以及任何项目上的标签数量都是未知的并且可能很高,因此使用JOIN是不切实际的。 有任何想法吗? 到目前为止,感谢您提供所有答案。 但是,如果我没记错的话,给出的答案将显示如何对标签进行“或”搜索。(选择所有具有n个标签中的一个或多个标签的项目)。我正在寻找有效的AND搜索。(选择所有带有n个标签的项目-可能还有更多。)

10
表名作为变量
我正在尝试执行此查询: declare @tablename varchar(50) set @tablename = 'test' select * from @tablename 这将产生以下错误: 消息1087,第16级,状态1,第5行 必须声明表变量“ @tablename”。 动态填充表名的正确方法是什么?


15
计算SQL Server中的运行总计
想象一下下表(称为TestTable): id somedate somevalue -- -------- --------- 45 01/Jan/09 3 23 08/Jan/09 5 12 02/Feb/09 0 77 14/Feb/09 7 39 20/Feb/09 34 33 02/Mar/09 6 我想要一个按日期顺序返回运行总计的查询,例如: id somedate somevalue runningtotal -- -------- --------- ------------ 45 01/Jan/09 3 3 23 08/Jan/09 5 8 12 02/Feb/09 0 8 77 14/Feb/09 7 15 …

17
无法删除或更新父行:外键约束失败
进行时: DELETE FROM `jobs` WHERE `job_id` =1 LIMIT 1 错误: #1451 - Cannot delete or update a parent row: a foreign key constraint fails (paymesomething.advertisers, CONSTRAINT advertisers_ibfk_1 FOREIGN KEY (advertiser_id) REFERENCES jobs (advertiser_id)) 这是我的桌子: CREATE TABLE IF NOT EXISTS `advertisers` ( `advertiser_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT …
170 mysql  sql 

8
SQL WHERE ID IN(id1,id2,…,idn)
我需要编写查询来检索ID的大列表。 我们确实支持许多后端(MySQL,Firebird,SQLServer,Oracle,PostgreSQL等),因此我需要编写标准的SQL。 id集的大小可能很大,查询将以编程方式生成。那么,最好的方法是什么? 1)使用IN编写查询 SELECT * FROM TABLE WHERE ID IN (id1, id2, ..., idn) 我的问题是。如果n很大会怎样?另外,性能如何? 2)使用OR编写查询 SELECT * FROM TABLE WHERE ID = id1 OR ID = id2 OR ... OR ID = idn 我认为这种方法没有n个限制,但是如果n非常大,性能会如何? 3)编写程序化解决方案: foreach (var id in myIdList) { var item = GetItemByQuery("SELECT * FROM TABLE …
170 sql  select 

21
加入是为了懒惰的人?
我最近与另一位开发人员进行了讨论,该开发人员向我声称JOIN(SQL)是无用的。从技术上讲,这是正确的,但他补充说,使用联接比在代码(C#或Java)中发出多个请求和链接表效率低。 对于他来说,加入是针对那些不在乎性能的懒惰的人。这是真的?我们应该避免使用联接吗?
169 c#  java  sql  join 


10
SQL查询以串联Oracle中多个行的列值
可以构造SQL来连接多行中的列值吗? 以下是一个示例: 表A PID 一个 乙 C 表B PID序列描述 A 1有 A 2不错 3天。 B 1做得好。 C 1是 C 2我们可以 C 3做 C 4这项工作! SQL的输出应为- PID描述 A祝你有美好的一天。 B做得好。 C是的,我们可以做这项工作! 因此,基本上,输出表的Desc列是表B中SEQ值的串联? 对SQL有帮助吗?

7
SQL OVER()子句-何时以及为何有用?
USE AdventureWorks2008R2; GO SELECT SalesOrderID, ProductID, OrderQty ,SUM(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Total' ,AVG(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Avg' ,COUNT(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Count' ,MIN(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Min' ,MAX(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Max' FROM Sales.SalesOrderDetail WHERE SalesOrderID IN(43659,43664); 我读到该条款,但我不明白为什么需要它。该功能Over做什么?怎么Partitioning By办?为什么我不能用文字查询Group By SalesOrderID?

5
OPTION(RECOMPILE)总是更快;为什么?
我遇到了一种奇怪的情况 OPTION (RECOMPILE)查询到查询中会使查询在半秒钟内运行,而省略查询会使查询花费超过五分钟的时间。 从Query Analyzer或C#程序通过执行查询时,就是这种情况SqlCommand.ExecuteReader()。打电话(或不打电话)DBCC FREEPROCCACHE或DBCC dropcleanbuffers没有区别;查询结果始终会即时返回OPTION (RECOMPILE)不超过五分钟的情况下。始终使用相同的参数调用该查询(为了进行此测试)。 我正在使用SQL Server 2008。 我对编写SQL相当满意,但以前从未OPTION在查询中使用过命令,并且在扫描此论坛上的帖子之前并不熟悉计划缓存的整个概念。我从帖子中了解到,这OPTION (RECOMPILE)是一项昂贵的操作。显然,它为查询创建了新的查找策略。那么,为什么随后的省略的查询OPTION (RECOMPILE)是如此之慢呢?后续查询是否应该利用上一次包含重新编译提示的调用所计算的查找策略? 是否有一个查询在每次调用时都需要重新编译提示是非常不寻常的吗? 对不起入门级的问题,但我实在无法一字不漏。 更新:我被要求发布查询... select acctNo,min(date) earliestDate from( select acctNo,tradeDate as date from datafeed_trans where feedid=@feedID and feedDate=@feedDate union select acctNo,feedDate as date from datafeed_money where feedid=@feedID and feedDate=@feedDate union select acctNo,feedDate as date from datafeed_jnl where …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.