Questions tagged «sql»

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

19
SQL确定最少连续访问天数?
以下用户历史记录表包含给定用户每天(在UTC的24小时内)访问网站的每一条记录。它有成千上万条记录,但每个用户每天只有一条记录。如果用户当天没有访问该网站,则不会生成任何记录。 ID UserId CreationDate ------ ------ ------------ 750997 12 2009-07-07 18:42:20.723 750998 15 2009-07-07 18:42:20.927 751000 19 2009-07-07 18:42:22.283 我正在寻找的是对此表具有良好性能的SQL查询,该查询告诉我哪些用户ID连续(n)天访问了该网站,却没有一天丢失。 换句话说,该表中有(n)个记录具有连续(前一天或后一天)日期的记录?如果序列中缺少任何一天,则该序列将中断并且应从1重新开始;否则,序列将重新开始。我们正在寻找在此连续几天没有间断的用户。 当然,此查询与特定的Stack Overflow标志之间的任何相似之处纯属巧合。.::)

12
是NOLOCK(Sql Server提示)不好的做法吗?
我的业务是制作并非关键任务的网站和应用程序->例如。银行软件,太空飞行,重症监护监控应用程序等。您明白了。 因此,使用大量的免责声明,在某些Sql语句中使用NOLOCK提示是否不好?几年前,一位SQL管理员提出建议,如果我对“脏读”感到满意,则应该使用NOLOCK,这会给我系统带来更多的性能,因为每次读都不会锁定表/行/其他。 还告诉我,如果遇到僵局,这是一个很好的解决方案。因此,我开始遵循这种想法几年了,直到一个sql专家帮助我提供了一些随机代码,并注意到sql代码中的所有NOLOCKS。礼貌地责骂我,他试图向我解释(为什么这不是一件好事),我有点迷路了。我觉得他的解释的实质是“这是一个解决更严重问题的创可贴解决方案……特别是在您遇到僵局的情况下。因此,请解决问题的根源。 我最近对此进行了一些搜索,发现了这篇文章。 那么,请问一些sql db专家老师能启发我吗?

7
在MySQL查询中一起使用DISTINCT和COUNT
可能是这样的: SELECT DISTINCT COUNT(productId) WHERE keyword='$keyword' 我想要获得与关键字相关联的唯一产品ID的数量。同一产品可能与某个关键字相关联两次,甚至更多,但我希望每个产品ID仅计一次
125 mysql  sql 

5
SQL-多对多表主键
阅读此问题的评论后,出现此问题: 数据库设计 创建多对多表时,应该在两个外键列上创建一个复合主键,还是创建一个自动增量替代的“ ID”主键,然后将索引放在两个FK列上(也许独特的约束)?在每种情况下插入新记录/重新索引对性能有何影响? 基本上,这是: PartDevice ---------- PartID (PK/FK) DeviceID (PK/FK) 与这个: PartDevice ---------- ID (PK/auto-increment) PartID (FK) DeviceID (FK) 评论者说: 将两个ID设置为PK意味着表将按照该顺序在磁盘上进行物理排序。因此,如果我们插入(Part1 / Device1),(Part1 / Device2),(Part2 / Device3),则(Part 1 / Device3),数据库将必须将表分开,并在条目2和3之间插入最后一个。对于许多记录,这变得非常成问题,因为每次添加一条记录都要涉及数百,数千或数百万个记录的改组。相比之下,自动递增的PK允许将新记录附加到末尾。 我问的原因是因为我一直倾向于在没有代理自动增量列的情况下执行复合主键,但是我不确定代理键实际上是否性能更高。

3
MySQL Select查询-仅获取值的前10个字符
好的,这就是问题所在。 我有一个带有一些列的表,“主题”是列之一。无论“主题”字段包含具有100个字母的字符串,我都需要从“主题”字段中获取前10个字母。 例如, 表- tbl。列- ,id,。subjectvalue SQL查询: SELECT subject FROM tbl WHERE id ='$id'; 例如,我得到的结果是 你好,这是我的主题,你好吗 我只需要前10个字符 你好 我知道我可以使用php substr()删除其余字符,但是在我的情况下是不可能的。我需要获取MySQL删除的多余字符。如何才能做到这一点?
125 mysql  sql  select 


6
更改SQL Server中的架构绑定视图引用的列的大小
我正在尝试使用以下方法在sql server中更改列的大小: ALTER TABLE [dbo].[Address] ALTER COLUMN [Addr1] [nvarchar](80) NULL Addr1原本长度的地方40。 它失败,引发此错误: The object 'Address_e' is dependent on column 'Addr1'. ALTER TABLE ALTER COLUMN Addr1 failed because one or more objects access this column. 我尝试对其进行阅读,似乎是因为某些视图引用了此列,而且SQL Server似乎实际上正在尝试删除引发错误的列。 Address_e 是由先前的数据库管理员创建的视图。 还有其他方法可以更改列的大小吗?
124 sql  sql-server 


10
ALTER DATABASE失败,因为无法在数据库上放置锁
我需要重新启动数据库,因为某些进程无法正常工作。我的计划是使其脱机并再次恢复在线。 我正在尝试在Sql Server Management Studio 2008中执行此操作: use master; go alter database qcvalues set single_user with rollback immediate; alter database qcvalues set multi_user; go 我收到这些错误: Msg 5061, Level 16, State 1, Line 1 ALTER DATABASE failed because a lock could not be placed on database 'qcvalues'. Try again later. Msg 5069, …

4
实际示例,何时在SQL中使用OUTER / CROSS APPLY
我一直在CROSS / OUTER APPLY和一位同事一起研究,我们正在努力寻找在哪里使用它们的真实示例。 我已经花了很多时间研究什么时候应该在内部联接上使用交叉申请?和谷歌搜索,但主要的(唯一的)示例似乎很奇怪(使用表中的行数来确定要从另一个表中选择多少行)。 我认为这种情况可能会受益于OUTER APPLY: 联系人表(每个联系人包含1条记录)通信条目表(每个联系人可以包含n个电话,传真,电子邮件) 但是,使用子查询,通用表表达式OUTER JOIN以及RANK()和OUTER APPLY似乎都表现相同。我猜这意味着该方案不适用于APPLY。 请分享一些真实的例子,并帮助解释该功能!

3
如何首先返回具有特定值的行?
我希望我的查询返回表的行,其中列首先包含特定值,然后返回其余按字母顺序排列的行。 如果我有一个表格,例如以下示例: - Table: Users - id - name - city - 1 George Seattle - 2 Sam Miami - 3 John New York - 4 Amy New York - 5 Eric Chicago - 6 Nick New York 并使用该表,我想对查询返回包含纽约的行,然后返回按城市字母顺序排列的其余行。仅使用一个查询就能做到吗?
124 sql  sql-order-by 

12
选择*与选择列
如果我只需要2/3列,而是查询SELECT *而不是在select查询中提供这些列,那么关于更多/更少I / O或内存的性能是否会降低? 如果我不需要选择*,则可能会出现网络开销。 但是在选择操作中,数据库引擎是否总是从磁盘中提取原子元组,还是仅提取在选择操作中请求的那些列? 如果它总是拉一个元组,那么I / O开销是相同的。 同时,如果它拉出一个元组,从元组中剥离请求的列可能会占用内存。 因此,在这种情况下,select someColumn将比select *具有更多的内存开销。
124 sql  performance 

7
一个表的SQL更新字段来自另一个表的字段
我有两个表: A [ID, column1, column2, column3] B [ID, column1, column2, column3, column4] A将始终是的子集B(表示的所有列A也在B)。 我想使用的所有列中的数据更新特定ID于的记录。这在都存在和。BAAIDAB 是否有UPDATE语法或任何其他方式做到这一点而无需指定列名,而只是说“设置A的所有列”? 我使用的是PostgreSQL,因此也可以接受特定的非标准命令(但是,不是首选)。

3
如何将现有的SQL Server登录名连接到同名的现有SQL Server数据库用户
是否有SQL Server命令将单个数据库的用户连接到同名数据库服务器的登录名? 例如: 数据库服务器-默认实例 数据库:TestDB 服务器登录 -TestUser TestDB上的现有用户-TestUser 如果我尝试使TestUser登录名成为TestDB数据库的用户,则“用户,组或角色”已经存在。 有人知道将数据库用户分配给服务器登录名的简便方法吗?
124 sql  sql-server 

22
是否有用于数据库结构更改的版本控制系统?
我经常遇到以下问题。 我正在对项目进行一些更改,这些更改需要数据库中的新表或新列。我进行数据库修改并继续我的工作。通常,我记得记下更改,以便可以在实时系统上复制它们。但是,我并不总是记得自己所做的更改,也并非总是记得写下来。 因此,我推动了实时系统,并收到了一个很大的明显错误,那就是没有NewColumnX,呃。 无论这可能不是这种情况的最佳实践,是否都存在数据库的版本控制系统?我不在乎特定的数据库技术。我只想知道是否存在。如果碰巧可以与MS SQL Server配合使用,那就太好了。

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.