小编Dav*_*uer的帖子

查找分层字段的最高级别:有与没有 CTE

注意:此问题已更新以反映我们目前正在使用 MySQL,这样做后,我想看看如果我们切换到支持 CTE 的数据库会更容易。

我有一个带有主键id和外键的自引用表parent_id

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int(11)      | NO   | PRI | NULL    | auto_increment | 
| parent_id  | int(11)      | YES  |     | NULL    |                | 
| name       | varchar(255) | YES  |     | NULL    |                | 
| notes      | text         | YES  |     | NULL    |                | 
+------------+--------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

给定 a name,如何查询顶级父级?

给定 a name,如何查询id …

mysql hierarchy

65
推荐指数
3
解决办法
8万
查看次数

何时在 MySQL 中使用视图?

从多个连接创建表以用于分析时,何时首选使用视图而不是创建新表?

我更喜欢使用视图的一个原因是我们的管理员在 Ruby 中开发了数据库模式,而我对 Ruby 并不熟悉。我可以请求创建表,但需要一个额外的步骤,我希望在开发/测试新连接时有更大的灵活性。

我开始使用关于 SO 相关问题的答案的视图(何时使用 R,何时使用 SQL)。得票最多的答案开始于“在 SQL 中进行数据操作,直到数据位于单个表中,然后在 R 中进行其余的操作”。

我已经开始使用视图,但我遇到了一些视图问题:

  1. 查询要慢得多
  2. 视图不会从生产环境转储到我用于分析的备份数据库。

视图是否适合这种用途?如果是这样,我应该期待性能损失吗?有没有办法加快对视图的查询?

mysql optimization view

65
推荐指数
2
解决办法
9万
查看次数

是否可以 mysqldump 重现查询所需的数据库子集?

背景

我想提供重现select查询所需的数据库子集。我的目标是使我的计算工作流程可重复(如可重复研究)。

有没有办法可以将这个 select 语句合并到一个脚本中,该脚本将查询的数据转储到一个新数据库中,这样数据库就可以安装在新的 mysql 服务器上,并且该语句可以与新数据库一起使用。除了查询中已使用的记录外,新数据库不应包含其他记录。

更新: 为了澄清起见,我对查询结果的 csv 转储不感兴趣。我需要能够做的是转储数据库子集,以便它可以安装在另一台机器上,然后查询本身可以重现(并且可以针对相同的数据集进行修改)。

例子

例如,我的分析可能会查询需要来自多个(在本例中为 3 个)表中的记录的数据子集:

select table1.id, table1.level, table2.name, table2.level 
       from table1 join table2 on table1.id = table2.table1_id 
       join table3 on table3.id = table2.table3_id
       where table3.name in ('fee', 'fi', 'fo', 'fum'); 
Run Code Online (Sandbox Code Playgroud)

mysql mysqldump join backup select

39
推荐指数
3
解决办法
8万
查看次数

编写一个慢查询来测试慢查询日志记录?

是否有一个需要 > 2 秒的简单查询,以便我可以测试慢查询记录器?

我正在寻找类似通用递归或迭代语句的东西。

mysql performance slow-log

19
推荐指数
1
解决办法
1万
查看次数

为什么我的 .my.cnf 设置不起作用?

我的桌面上的主目录中有一个 .my.cnf 文件,其中包括:

[dbid]
user = myusername
password = mypassword
database = dbname
host = server.location.com
Run Code Online (Sandbox Code Playgroud)

如果我没记错的话,在从 Ubuntu 10.04 升级到 11.04 之前,我能够使用命令

mysql dbid
Run Code Online (Sandbox Code Playgroud)

直接连接到数据库

但是今天我收到了这个错误:

ERROR 1049 (42000): Unknown database 'dbname'
Run Code Online (Sandbox Code Playgroud)

我做错了什么吗?

mysql configuration

15
推荐指数
2
解决办法
9774
查看次数

在 MySQL 中处理公元 1000 年之前日期的最佳方法?

我正在为公元 1000 年之前扩展的记录创建一个数据库,但 MySQL 日期和日期时间字段仅支持从 1000 开始的日期。

有没有比使用 bigint 类型使用 Unix 时间戳计算 1/1/1970 之前/之后的秒数或切换到支持更大日期范围的数据库软件更方便的方法?

mysql database-design best-practices timestamp date-format

9
推荐指数
2
解决办法
4455
查看次数

用一条语句更新表中的多行?

更新表中多行的最简单方法是什么?我有一个如下所示的 csv 文件:

|primary_key |value|
|          1 |  xyz|
|          2 |  abc|
|          3 |  def|
...
Run Code Online (Sandbox Code Playgroud)

目标表中已存在具有这些主键的行

我想用这些值更新目标表。是否有语法,以便我可以编写如下内容:

update mytable set value = ('xyz', 'abc', 'def') where primary key = (1,2,3);
Run Code Online (Sandbox Code Playgroud)

查看MySQL 更新参考、本站点(MySQL-csv 更新)、SO(更新多行多个数据库更新更新多行),我怀疑答案是“否”,但我想确认这一点是真的。

mysql update replace

9
推荐指数
1
解决办法
3万
查看次数

如何编码已知日期但未知年份?

我正在使用 Postgres 数据库,并且有一个带有日期时间字段的表。对于许多记录,我们知道年份但不知道日期。有时我们知道日期但不知道年份。其他时候我们知道时间但不知道日期。

使用日期时间数据类型时如何存储部分日期信息?

postgresql best-practices datetime date

7
推荐指数
1
解决办法
294
查看次数

mysql 可以从大型 mysqldump 中恢复单个表吗?

从大型(~5GB)数据库 mysqldump 文件恢复单个表的最佳方法是什么?


更新: 我找到了使用命令行工具解析表的解决方案(在下面发布),但是有没有办法用 mysqlimport 来做到这一点?

mysql mysqldump

6
推荐指数
3
解决办法
2万
查看次数