Questions tagged «sql»

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

7
在关系数据库中存储分层数据有哪些选择?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 10个月前关闭。 好的概述 一般来说,您需要在快速读取时间(例如,嵌套集)或快速写入时间(邻接列表)之间做出决定。通常,您最终会得到以下最适合您的选项的组合。以下内容提供了一些深入的阅读: 嵌套间隔与邻接列表的另一比较:邻接列表,物化路径,嵌套集和嵌套间隔的最佳比较。 分层数据模型:幻灯片,其中对折衷和示例用法进行了很好的解释 在MySQL中表示层次结构:特别是对嵌套集的很好概述 RDBMS中的分层数据:我见过的最全面,组织最完整的链接集,但解释方式不多 选件 我知道的和一般功能: 邻接表: 列:ID,ParentID 易于实现。 廉价节点移动,插入和删除。 昂贵的查找级别,祖先和后代,路径 通过支持它们的数据库中的公用表表达式避免N + 1 嵌套集(又名修改后的预排序树遍历) 列:左,右 廉价祖先,后裔 O(n/2)由于易失性编码,非常昂贵的移动,插入,删除 桥接表(又名闭包表/ w触发器) 使用单独的联接表,并带有:祖先,后代,深度(可选) 便宜的祖先和后裔 写入O(log n)用于插入,更新,删除的成本(子树的大小) 标准化编码:适合联接中的RDBMS统计和查询计划程序 每个节点需要多行 沿袭列(又名物化路径,路径枚举) 栏:沿袭(例如/ parent / child / grandchild / etc ...) 通过前缀查询的廉价后代(例如LEFT(lineage, #) = '/enumerated/path') 写入O(log n)用于插入,更新,删除的成本(子树的大小) 非关系:依赖于数组数据类型或序列化的字符串格式 嵌套间隔 类似于嵌套集,但具有实数/浮点数/十进制数,因此编码不会不稳定(廉价的移动/插入/删除) …

16
在每个GROUP BY组中选择第一行?
顾名思义,我想选择以分组的每一行的第一行GROUP BY。 具体来说,如果我有一个purchases看起来像这样的表: SELECT * FROM purchases; 我的输出: id | 客户| 总 --- + ---------- + ------ 1 | 乔| 5 2 | 莎莉| 3 3 | 乔| 2 4 | 莎莉| 1个 我想查询每个人id最大的购买金额(total)customer。像这样: SELECT FIRST(id), customer, FIRST(total) FROM purchases GROUP BY customer ORDER BY total DESC; 预期产量: FIRST(id)| 客户| …




11
我可以将多个MySQL行连接到一个字段中吗?
使用MySQL,我可以做类似的事情: SELECT hobbies FROM peoples_hobbies WHERE person_id = 5; 我的输出: shopping fishing coding 但是我只想要1行1列: 预期产量: shopping, fishing, coding 原因是我要从多个表中选择多个值,并且在所有联接之后,我得到的行比我想要的要多得多。 我在MySQL Doc上寻找了一个函数,它看起来不像CONCAT或CONCAT_WS函数接受结果集。 那么,这里有人知道该怎么做吗?
1214 mysql  sql  concat  group-concat 



14
获得插入行身份的最佳方法?
IDENTITY插入行的最佳方法是什么? 我了解@@IDENTITY和了解IDENT_CURRENT,SCOPE_IDENTITY但不了解它们各自的优缺点。 有人可以解释这些差异,以及何时应使用它们?
1118 sql  sql-server  tsql 


30
参数化SQL IN子句
如何对包含IN子句的查询进行参数化,像这样的子句? SELECT * FROM Tags WHERE Name IN ('ruby','rails','scruffy','rubyonrails') ORDER BY Count DESC 在此查询中,参数的数量可以为1到5之间的任意值。 我不希望对此(或XML)使用专用的存储过程,但是如果有一些特定于SQL Server 2008的优雅方法,我可以接受。


17
订购后如何限制Oracle查询返回的行数?
有没有一种方法可以使Oracle查询的行为像包含MySQL limit子句一样? 在中MySQL,我可以这样做: select * from sometable order by name limit 20,10 以获得第21至第30行(跳过前20行,给出下10行)。这些行是在之后选择的order by,因此它实际上按字母顺序从第20个名称开始。 在中Oracle,人们唯一提到的是rownum伪列,但它是在之前 评估的order by,这意味着: select * from sometable where rownum <= 10 order by name 将返回一个随机的十行,按名称排序,这通常不是我想要的。它也不允许指定偏移量。

6
JOIN和INNER JOIN之间的区别
这两个连接将给我相同的结果: SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK 与 SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK 语句之间的性能或其他方面是否有区别? 不同的SQL实现之间是否有所不同?


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.