当创建另一个表的副本时,让我们假设表'tab1‘已经存在,我想要创建一个名为'tab2’的表的副本。
CREATE TABLE tab2 AS SELECT * FROM tab1 WHERE 1=1;
创建结构和数据的副本。
CREATE TABLE tab2 AS SELECT * FROM tab1 WHERE 1=2;
只创建结构。据我所知,1=1是真,1=2是假。
我可以说是1=1而不是69=69吗?我可以说是1=2而不是99=2吗?
表中有3列:
id Name Rating
1 John 0.976
2 Mark 0.500
3 Andrew 0.976
4 Jane 1.000
可以做什么sql查询来为这个表创建一个新的id_new列,因此id_new实际上是由Rating排序的列。
因此,新的表格将是:
new_id id Name Rating
1 4 Jane 1.000
2 3 Andrew 0.976
3 1 John 0.976
4 2 Mark 0.500
您可以看到,这个表看起来是由Rating排
我试图将ALTER权限授予远程MySQL用户,但当我执行该查询时,它会出现错误:"ALTER命令拒绝给user MySQL for RemoteTest‘“
在ALTER之前,该表是在同一个脚本中用created创建的,这是成功的。
用户“远程”被授予mysql用户表中的alter_priv。
给予的特权是:
mysql> select insert_priv, create_priv, alter_priv from user where user="**********";
+-------------+-------------+------------+
mysql集群上的备机复制有问题。
当我使用select as sql创建表时,可以创建表,但是CREATE TABLE tmp1 AS SELCT * FROM tmp2不会记录在binlog中,也不会复制到从表中。
但是,如果我通过定义或类似的方式创建表,例如: sql,则可以在binlog中记录CREATE TABLE tmp1 LIKE tmp2" OR "CREATE TABLEtmp1(idint(11) NOT NULL ),命令,并将其复制到从表。
这上面有什么设置吗?
我的mysql集群版本是5.6.31-ndb-7.4.12- cluster -gpl-lo
我的CloudSQL数据库中有一个8Go表,它(目前)没有主键。它由5200万行组成,每行20列。
我想添加一个,因为我将删除重复项,并且在没有主键的情况下这样做对于MySQL来说太耗时
然而,我在运行时遇到了一些问题,我想知道我是否真的是以最有效的方式来做这件事。
我想使用下面的代码行添加这个主键:
ALTER TABLE mytable ADD COLUMN id INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST
我预计这个请求会使我的数据库大小增加几百MB,并且运行得相当快。
但是,当我运行请求时,我看到数据库使用率增加了很多(+ 14 GB)
为什么我不能创建一个临时表然后立即加入到它身上呢?
mysql> CREATE TEMPORARY TABLE table2 as (select in_reply_to_id, COUNT(in_reply_to_id) as C from mentions where in_reply_to_id>0 group by in_reply_to_id);
查询确定,57149行受影响(0.14秒)记录: 57149重复:0警告:0
mysql> select T.tweet_id, T.favorite_count, T.retweet_count, T2.C fro
我有两个网站环境(单独的服务器,媒体寺庙DVs):开发和生产。
我们开始在生产上构建站点,然后获得了一个Dev服务器,所以我最初使用以下命令将生产数据库移动到Dev:
$ mysqldump -a -u USERNAME -p DATABASE > OUTPUT.mysql
$ gzip OUTPUT.mysql
然后,我创建了Dev服务器网站和数据库,将OUTPUT.mysql移到上面,并在Dev上设置了用于导入的MySQL环境:
$ mysql -u USERNAME -p DATABASE
set up environment for large data import:
my