Questions tagged «sql»

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

9
MySQL SELECT仅非空值
是否可以执行仅接受NOT NULL值的select语句? 现在我正在使用这个: SELECT * FROM table 然后,我必须用php循环过滤掉空值。 有没有办法做: SELECT * (that are NOT NULL) FROM table ? 现在,当我选择*时,我得到val1,val2,val3,null,val4,val5,null,null等。但是我只想获取结果中不为null的值。没有循环过滤就可以吗?
264 mysql  sql  select  notnull 

15
使用T-SQL从日期月份和年份中创建日期
我正在尝试将包含2007年12月1日等各个部分的日期转换为SQL Server 2005中的日期时间。我尝试了以下方法: CAST(DATEPART(year, DATE)+'-'+ DATEPART(month, DATE) +'-'+ DATEPART(day, DATE) AS DATETIME) 但这会导致日期错误。将三个日期值转换为正确的日期时间格式的正确方法是什么?

9
在Oracle中进行多行插入的最佳方法?
我正在寻找一种在Oracle 9数据库中执行多行插入的好方法。以下内容在MySQL中有效,但Oracle似乎不支持。 INSERT INTO TMP_DIM_EXCH_RT (EXCH_WH_KEY, EXCH_NAT_KEY, EXCH_DATE, EXCH_RATE, FROM_CURCY_CD, TO_CURCY_CD, EXCH_EFF_DATE, EXCH_EFF_END_DATE, EXCH_LAST_UPDATED_DATE) VALUES (1, 1, '28-AUG-2008', 109.49, 'USD', 'JPY', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'), (2, 1, '28-AUG-2008', .54, 'USD', 'GBP', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'), (3, 1, '28-AUG-2008', 1.05, 'USD', 'CAD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'), (4, 1, '28-AUG-2008', .68, 'USD', 'EUR', '28-AUG-2008', '28-AUG-2008', …

8
在控制台中禁用Rails SQL日志记录
在控制台中执行命令时,是否可以禁用SQL查询日志记录?理想情况下,如果我可以禁用它,然后在控制台中使用命令重新启用它,那就太好了。 我正在尝试调试某些内容,并使用“ puts”打印一些相关数据。但是,SQL查询输出使其难以阅读。 编辑: 我找到了另一个解决方案,因为如果除我的代码之外的其他东西试图调用logger,则将记录器设置为nil有时会引发错误。 除了将记录器设置为以外,nil您还可以将记录器的级别设置为1。 ActiveRecord::Base.logger.level = 1 # or Logger::INFO



18
HAVING和WHERE有什么区别?
我必须以错误的方式进行谷歌搜索,否则我的时间很蠢。 什么之间的区别HAVING,并WHERE在SQL SELECT声明中? 编辑:我已经标记了史蒂文的答案是正确的答案,因为它包含链接上信息的关键点: 当GROUP BY不使用时,HAVING就像一个WHERE条款 我所见过的WHERE情况并没有发生,GROUP BY而这正是我开始困惑的地方。当然,除非您知道这一点,否则无法在问题中指定它。
260 sql  where  having 

7
如何在PostgreSQL中设置自动递增主键?
我在PostgreSQL中有一个具有22列的表,并且我想添加一个自动增量主键。 我试图创建一个名为idBIGSERIAL类型的列,但是pgadmin响应了一个错误: ERROR: sequence must have same owner as table it is linked to. 有人知道如何解决此问题吗?如何在PostgreSQL中添加创建自动递增主键而又不重新创建表的方法?
259 sql  postgresql 

9
SQL Server中INNER JOIN与LEFT JOIN的性能
我创建了在9个表上使用INNER JOIN的SQL命令,无论如何,此命令将花费很长时间(超过五分钟)。所以我的同事建议我将INNER JOIN更改为LEFT JOIN,因为尽管我知道,但LEFT JOIN的性能更好。更改后,查询速度得到了显着提高。 我想知道为什么LEFT JOIN比INNER JOIN快? 我的SQL命令看起来象下面这样: SELECT * FROM A INNER JOIN B ON ... INNER JOIN C ON ... INNER JOIN D等 更新: 这是我的架构的简要介绍。 FROM sidisaleshdrmly a -- NOT HAVE PK AND FK INNER JOIN sidisalesdetmly b -- THIS TABLE ALSO HAVE NO PK AND FK …

7
在一列上选择DISTINCT
使用SQL Server,我有... ID SKU PRODUCT ======================= 1 FOO-23 Orange 2 BAR-23 Orange 3 FOO-24 Apple 4 FOO-25 Orange 我想要 1 FOO-23 Orange 3 FOO-24 Apple 这个查询没有让我知道。如何仅在一列上选择DISTINCT? SELECT [ID],[SKU],[PRODUCT] FROM [TestData] WHERE ([PRODUCT] = (SELECT DISTINCT [PRODUCT] FROM [TestData] WHERE ([SKU] LIKE 'FOO-%')) ORDER BY [ID]
258 sql  sql-server  tsql  distinct 


19
内在联系与何处
两者之间的性能(在oracle中)是否有区别 Select * from Table1 T1 Inner Join Table2 T2 On T1.ID = T2.ID 和 Select * from Table1 T1, Table2 T2 Where T1.ID = T2.ID ?
257 sql  performance  oracle 


19
为什么有人在SQL子句中使用WHERE 1 = 1 AND <conditions>?
为什么有人WHERE 1=1 AND &lt;conditions&gt;在SQL子句中使用(通过连接字符串获得的SQL,要么是视图定义) 我在某个地方看到过,它将被用来防止SQL注入,但是看起来很奇怪。 如果进行注射WHERE 1 = 1 AND injected OR 1=1,结果将与相同injected OR 1=1。 稍后编辑:视图定义中的用法如何? 谢谢您的回答。 仍然,我不明白为什么有人会使用这种构造来定义视图,或者在存储过程中使用它。 以这个为例: CREATE VIEW vTest AS SELECT FROM Table WHERE 1=1 AND table.Field=Value
256 sql  dynamic-sql 

21
表中主键的最佳做法是什么?
在设计表时,我养成了一种习惯,即拥有一列唯一且由我作为主键的列。这可以通过三种方式来实现,具体取决于需求: 自动递增的标识整数列。 唯一标识符(GUID) 可以用作行标识符列的短字符(x)或整数(或其他相对较小的数字类型)列 数字3将用于较小的查找,大多数情况下是读取的表,这些表可能具有唯一的静态长度字符串代码或数字值,例如年份或其他数字。 在大多数情况下,所有其他表都将具有自动递增的整数或唯一标识符主键。 问题:-) 我最近开始使用没有一致行标识符的数据库,并且主键当前聚集在各个列上。一些例子: 日期时间/字符 日期时间/整数 日期时间/ varchar char / nvarchar / nvarchar 有没有有效的理由呢?对于这些情况,我将始终定义一个标识或唯一标识符列。 此外,还有许多根本没有主键的表。这样做的有效原因是什么? 我试图理解为什么表是按原样设计的,这对我来说似乎是一团糟,但也许有充分的理由。 第三个问题可以帮助我解释答案:如果使用多列组成复合主键,与代理/人工键相比,此方法是否具有特定优势?我主要是在性能,维护,管理等方面进行思考?

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.