Tag: sql

查询来确定数据库中表的大小? (MySQL的)

网站“如何计算MySQL数据库大小”给出了两个查询: 确定所有数据库的大小 SELECT table_schema "Data Base Name", SUM( data_length + index_length) / 1024 / 1024 "Data Base Size in MB" FROM information_schema.TABLES GROUP BY table_schema ; 确定数据库中所有表的大小 SELECT TABLE_NAME, table_rows, data_length, index_length, round(((data_length + index_length) / 1024 / 1024),2) "Size in MB" FROM information_schema.TABLES WHERE table_schema = "schema_name"; 第一个查询正常工作,但第二个查询不会生成结果集。 它只显示没有任何行的字段的名称。 如何修改第二个查询,以正确显示我的数据库中的表的大小的大小。

在表中为每个ID在另一个表中插入行

我试图寻找类似的解决scheme,但没有看到一个,所以我想知道什么是完成以下最好的方法。 我有一个有1700万行的表,都有一个唯一的ID。 我们最近创build了一个新的表,这个表将与上一个表一起使用,其中新表的外键是旧表的唯一ID。 例如。 表1 – id,field1,field2,field3 …表2 – table1.id,field1 … 问题是,因为我们正在把它迁移到一个实际的环境中,所以我们需要用表1中的每一行包含来自表1的id的行来填充表2.现在需要表1-1的test,null表2对于table1中的每一行,都有:1,null,…等等。 主要问题是表1中的ID不是全部顺序,所以我们必须从表1中读取,然后根据find的ID插入到表2中。 有没有更简单的方法来解决这个问题? 在此先感谢乔 另外为了澄清,表2将是新数据,并且它将从表1中唯一包含的是保持外键关系的id 这也是SQL Server 2000

MySQL解释计划中“Select tables optimized away”的含义

在MySQL解释计划中Select tables optimized away的含义是什么? explain select count(comment_count) from wp_posts; +—-+————-+—————————+—————————–+ | id | select_type | table,type,possible_keys, | Extra | | | | key,key_len,ref,rows | | +—-+————-+—————————+—————————–+ | 1 | SIMPLE | all NULLs | Select tables optimized away| +—-+————-+—————————+—————————–+ 1 row in set (0.00 sec) 注意: explain plan为易读性编辑的explain plan输出。

在SQL中select一个列而不是在分组依据

我一直在试图find一些关于如何select一个不包含在SQL中的Group By语句中的非聚合列的信息,但是到目前为止我没有发现任何东西似乎回答了我的问题。 我有一张桌子,里面有三个我想要的东西。 一个是创builddate,一个是通过特定的Claim ID对logging进行分组的ID,最后是PK。 我想查找每组索赔ID中具有最大创builddate的logging。 我selectMAX(创builddate)和Claim ID(cpe.fmgcms_cpeclaimid),并按照Claim ID进行分组。 但我需要从这些logging(cpe.fmgcms_claimid)的PK,如果我尝试将它添加到我的select子句,我得到一个错误。 而且我不能把它加到我的小组中,因为那样它就会抛弃我想要的分组。 有没有人知道这个解决方法? 这是我的代码示例: Select MAX(cpe.createdon) As MaxDate, cpe.fmgcms_cpeclaimid from Filteredfmgcms_claimpaymentestimate cpe where cpe.createdon < 'reportstartdate' group by cpe.fmgcms_cpeclaimid 这是我想要得到的结果: Select MAX(cpe.createdon) As MaxDate, cpe.fmgcms_cpeclaimid, cpe.fmgcms_claimid from Filteredfmgcms_claimpaymentestimate cpe where cpe.createdon < 'reportstartdate' group by cpe.fmgcms_cpeclaimid

最近的一条左连接logging

想象一下,我在SqlServer中有以下3个表: Customer (CustomerID, FirstName, LastName) Address (AddressID, CustomerID, Line1, City, State) Product (ProductID, CustomerID, Description) 一个客户可以有多个交货地址和多个产品。 我想要做的是列出由最近的地址logging确定的每个州的客户数量。 如“每个州有多less客户最后收到产品?”。 因此,我对客户以前的任何地址logging不感兴趣,只有最近的(由AddressID确定)。 State | Number of Customers ————————– CA | 32 GA | 12 TX | 0 OH | 18 我通常会做这样的事情: SELECT a.State, count(c.CustomerID) FROM Product p INNER JOIN Customer c ON c.CustomerID = p.CustomerID LEFT JOIN Address […]

如何select一个空的结果集?

我正在MySQL中使用一个存储过程,并带有一个CASE语句。 在CASE的ELSE子句中(相当于默认值:)我想select并返回一个空的结果集,这样就避免了因为不处理ELSE情况而抛出一个SQL错误,而是返回一个空的结果集,就好像一个普通的查询将不会返回任何行。 到目前为止,我已经设法使用这样的东西: Select NULL From users Where False 但是我必须命名一个现有的表,比如这个例子中的“用户”。 它的工作原理,但我宁愿更优雅的方式,如果最终使用的表名称被重命名或删除不会中断。 我试过Select NULL Where False但它不起作用。 使用Select NULL不会返回一个空的集合,而是一行具有名为NULL并具有NULL值的列。

数据库行中的标志,最佳实践

我出于好奇而问这个问题。 基本上我的问题是,当你有一个数据库需要一个行的条目,像旗帜一样的事情,最好的做法是什么? 一个很好的例子就是堆栈溢出的徽章或者bugzilla中的操作系统字段。 标志的任何子集可以为给定的条目设置。 通常,我做c和c ++的工作,所以我的直觉反应是使用一个无符号的整数字段作为一组位可以翻转…但我知道这是不是一个好的解决scheme,有几个原因。 其中最明显的就是可扩展性,对于我能拥有多less标志将会有一个硬性的上限。 我还可以考虑一些其他解决scheme,这些解决scheme可以更好地扩展,但会有性能问题,因为它们需要多个选项来获取所有信息。 那么,做这件事的“正确”方法是什么?

MySQL / SQL检索文本字段的前40个字符?

我怎样才能从MySQL数据库表中检索文本字段,但不是整个文本,只有几十个左右的字符。 这可以在SQL中完成,或者我需要使用PHP来做到这一点? 基本上我试图做的是显示前x个字符,然后让用户点击,查看完整的内容。

recursionCTE如何逐行运行?

我认为recursionCTE的格式已经足够写下来了,但是仍然发现自己不能手动处理一个(假装自己是SQL引擎,用笔和纸来达到结果集) 。 我find了这个 ,这与我正在寻找的接近,但不够详细。 我没有任何问题通过C ++recursion函数追踪并理解它如何运行 – 但对于SQL我不明白为什么或如何引擎知道停止。 锚和recursion块是否每次都被调用,或者在稍后的迭代中跳过锚点? (我对此表示怀疑,但是我试图expression自己对似乎跳跃的方式的困惑)。如果每次调用锚点,那么锚点在最终结果中不会多次出现? 我希望有人可以做第1行第2行,等等。结果集积累什么发生,什么是“内存中”。 我冒昧地从这个页面偷了我的例子 ,因为它似乎是最容易理解的。 DECLARE @tbl TABLE ( Id INT , [Name] VARCHAR(20) , ParentId INT ) INSERT INTO @tbl( Id, Name, ParentId ) VALUES (1, 'Europe', NULL) ,(2, 'Asia', NULL) ,(3, 'Germany', 1) ,(4, 'UK', 1) ,(5, 'China', 2) ,(6, 'India', 2) ,(7, 'Scotland', 4) […]

在MySQL中存储IPv6地址

正如在“具有ipv6function的inet_aton和inet_ntoafunction需要 ”中所要求的那样,目前没有用于存储IPv6地址的MySQLfunction。 推荐的数据types/函数用于存储/插入是什么? (我不打算把它们存储为一个string)。 我也不想把IPv6地址分成2个INT。