草庐IT

multiple-tables

全部标签

MySQL 问题 : LEFT JOIN on empty table

给定一个包含两个表X和Y的数据库,我有一个查询应该LEFTJOIN两个表的属性X.a1和Y.b1。我使用了以下查询:SELECTX.a1,X.a2,Y.b1,Y.b2FROMXLEFTJOINYON(X.a1=Y.b1)我认为这足以工作,即使Y当前是一个空表。但是,查询中断是因为表Y似乎是空的。有什么方法可以重新格式化此查询,以便即使Y是一个空表,LEFTJOIN也不会中断?或者我是否只需要始终确保表Y中有一些数据,即使它与表X中的任何内容都不匹配(因此LEFT加入). 最佳答案 由于您没有发布您的实际SQL,我只是在这里做出假设。

Mysql2::错误:表 'table_name' 不存在:显示来自 `table_name` 的完整字段

我正在使用rails5.1.1和mysql5.7。我有一个迁移类:classCreateCompanies我有一个空模型calledny.rb和一个名为companies_controller.rb的Controller。我的database.yml是:#MySQL.Versions5.1.10anduparesupported.##InstalltheMySQLdriver#geminstallmysql2##EnsuretheMySQLgemisdefinedinyourGemfile#gem'mysql2'##Andbesuretousenew-stylepasswordhash

mysql - Zend_Db_Table 中的 "IS NULL"选择不工作

我正在尝试使用DbTable/model/mapper结构对Zend中的2个表进行连接。如果在我的映射器中,我这样做:$select=$this->getDbTable()->select(Zend_Db_Table::SELECT_WITH_FROM_PART)->setIntegrityCheck(false)->join('images','images.oldFilename=availablePictures.filename')->where('images.refISNOTNULL');$resultSet=$this->getDbTable()->fetchAll($s

具有一个多字段键的 MySQL 索引 : Having multiple indexes vs.?

当我在MySQL中手动创建表时,我会为我认为将用于查询的每个字段一次添加一个索引。当我使用phpMyAdmin为我创建表并以创建表形式选择索引时,我看到phpMyAdmin将我的索引合并为1(加上我的主索引)。有什么区别?这个比那个好吗?在什么情况下?谢谢! 最佳答案 这两个都不是特别好的策略,但如果我必须选择,我会选择多个单一索引。原因是只有使用索引的任何完整前缀中的所有字段,才能使用索引。如果您有一个索引(a,b,c,d,e,f)那么这对于过滤a的查询或同时过滤a的查询都可以正常工作>和b,但对于仅在c上的查询过滤将无用。没有简

MySQL : loop over tables and alter table add index

我有大约1000个以相同前缀开头的表:table_prefix_{SOME_ID}(我可以从另一个表中获取ID)遍历所有mysql中的表并执行以下操作的快速方法是什么:ALTERTABLE`table_prefix_{some_id}`ADDINDEX`fields`(`field`) 最佳答案 忘记循环。只需这样做:selectconcat('altertable',a.table_name,'addindex`fields`(`field`);')frominformation_schema.tablesawherea.tabl

mysql - 外键约束失败,错误代码为 "Error creating foreign key on [table] (check data types)"

以下查询失败并出现错误“在城市上创建外键时出错(检查数据类型)”:ALTERTABLE`hotels`ADDFOREIGNKEY(`city`)REFERENCES`mydatabase`.`cities`(`id`)ONDELETECASCADEONUPDATECASCADE;基本上我想在city.id和hotels.city之间建立一对多关系。这是两个表:CREATETABLEIFNOTEXISTS`cities`(`id`int(11)NOTNULLAUTO_INCREMENT,PRIMARYKEY(`id`))ENGINE=InnoDB;CREATETABLEIFNOTEXIS

mysql - 使用alter table添加分区失败

我有一个结构如下的表:CREATETABLE`child_table`(`id`int(11)NOTNULLAUTO_INCREMENT,`value`int,`ref_id`int,PRIMARYKEY(`id`),KEY`ref_id`(`ref_id`),CONSTRAINT`FK4E9BF08E940F8C98`FOREIGNKEY(`ref_id`)REFERENCES`parent_table`(`id`)ONDELETECASCADE)运行语句添加分区时,失败并显示错误:ERROR1217:Cannotdeleteorupdateaparentrow:aforeignke

php - Doctrine 迁移 : adding and removing two foreign key columns to existing table is not working

我有现有的表pricing,在迁移脚本中我想添加两个新列pricing_set_id和coe_id,它们都是外键.在up函数上,它运行完美,没有任何错误,但是当我运行down函数时,它出现了错误。我的代码如下。在up函数上:$pricingTable=$schema->getTable('pricing');$pricingSetTable=$schema->getTable('pricing_set');if(!$pricingTable->hasColumn('pricing_set_id')){$pricingTable->addColumn('pricing_set_id','

php mysql、pdo 和查询 : why multiple 'query' don't work (in this case)?

这是我的sql请求:$sql='CREATETEMPORARYTABLEtmp'.'SELECT*FROM'.$table.''.'WHEREid=:id;'.'ALTERTABLEtmpdropID;'.'INSERTINTO'.$table.''.'SELECT0,tmp.*FROMtmp;'.'SET@last=LAST_INSERT_ID();'.'DROPTABLEtmp;'.'SELECT@last;';$stmt=$this->bd->execQuery($sql,array(':id'=>101));echo"1->=";var_export($stmt);echo"\

php - 如何在子查询中使用 SHOW CREATE TABLE?

我正在尝试完成这样的事情:SELECT*FROMinformation_schema.`tables`JOIN(SHOWCREATETABLE)#有没有一种方法可以在一个查询中执行此操作? 最佳答案 没有办法以这种方式做到这一点。SHOWCREATETABLE命令检索数据集,但结果无法与另一个表连接。将SHOWCREATETABLE作为应用程序中所需的每个表的单独命令执行。 关于php-如何在子查询中使用SHOWCREATETABLE?,我们在StackOverflow上找到一个类似的问