Tag: MySQL

MySQL:不喜欢

我有这些文字在我的分贝, categories_posts categories_news posts_add news_add 而我不想selectcategories的行,我使用这样的查询, SELECT * FROM developer_configurations_cms WHERE developer_configurations_cms.cat_id = '1' AND developer_configurations_cms.cfg_variables LIKE '%parent_id=2%' AND developer_configurations_cms.cfg_name_unique NOT LIKE '%categories%' 但它在输出中返回这两个以及… categories_posts categories_news 如何在我的查询中忽略它们? 谢谢。

MySQL可以replace多个字符吗?

我试图在MySQL字段中replace一堆字符。 我知道REPLACE函数,但是一次只replace一个string。 手册中看不到任何适当的function。 我可以一次更换或删除多个string吗? 例如,我需要用破折号replace空格,并删除其他标点符号。

如何在单个MySQL语句中添加一列并使其成为外键?

在MySQL中,我可以在同一个语句中添加一个列和外键? 什么是适当的语法添加fk? 这是我的SQL: ALTER TABLE database.table ADD COLUMN columnname INT DEFAULT(1), FOREIGN KEY (fk_name) REFERENCES reftable(refcolumn) ON DELETE CASCADE; …和附带的错误信息: 你的SQL语法有错误, 检查对应于您的MySQL服务器版本的手册,以便在第4行的'FOREIGN KEY(fk_name)REFERENCES reftable(refcolumn)ON DELETE CASCADE'附近使用正确的语法

多列主键中的NULL值

我有一个表格,有几列组成主键。 存储的数据的性质允许这些字段中的一些具有NULL值。 我devise了我的桌子, CREATE TABLE `test` ( `Field1` SMALLINT(5) UNSIGNED NOT NULL, `Field2` DECIMAL(5,2) UNSIGNED NULL DEFAULT NULL, PRIMARY KEY (`Field1`, `Field2`) ) COLLATE='latin1_swedish_ci' ENGINE=InnoDB; 但是,当我运行describe test它显示像这样: || *Field* || *Type* || *Null* || *Key* || *Default* || *Extra* || Field1 || smallint(5) unsigned || NO || PRI || || || Field2 || decimal(5,2) unsigned […]

SQL UPDATE引用MySQL中的同一个表的子查询

我试图用UPDATE更新表中一堆行的列值。 问题是我需要使用子查询来派生这个列的值,它依赖于同一个表。 这是查询: UPDATE user_account student SET student.student_education_facility_id = ( SELECT teacher.education_facility_id FROM user_account teacher WHERE teacher.user_account_id = student.teacher_id AND teacher.user_type = 'ROLE_TEACHER' ) WHERE student.user_type = 'ROLE_STUDENT'; 一般来说,如果老师和学生在两个不同的表中,MySQL不会抱怨。 但是因为它们都使用同一个表,所以mysql会发出这个错误: 错误1093(HY000):您无法在FROM子句中指定目标表'student'进行更新 有什么办法可以强制MySQL做更新? 我是100%正面的FROM子句不会因为行更新而受到影响。 如果没有,是否有另一种方式,我可以写这个更新SQL来实现相同的影响? 谢谢! 编辑:我想我得到它的工作: UPDATE user_account student LEFT JOIN user_account teacher ON teacher.user_account_id = student.teacher_id SET student.student_education_facility_id = teacher.education_facility_id WHERE student.user_type = 'ROLE_STUDENT';

SQL性能UNION与OR

我刚刚阅读了一篇优化文章的一部分,并在以下声明中进行了细分 : 当使用ORreplace语句使用OR与UNION : select username from users where company = 'bbc' or company = 'itv'; 至: select username from users where company = 'bbc' union select username from users where company = 'itv'; 从一个快速的解释: 使用OR : 使用UNION : 这是不是意味着UNION在双重工作 ? 虽然我很欣赏UNION可能对某些RDBMS和某些表模式更高性能,但这并不是作者的build议。 题 我错了吗?

MySQL的术语“约束”与“外键”的区别?

我在这里查看MySQL文档,并试图理清FOREIGN KEY和CONSTRAINT之间的区别。 我以为FK 是一个约束,但是文档似乎像他们是独立的东西一样谈论他们。 创buildFK的语法是(部分)… [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, …) REFERENCES tbl_name (index_col_name,…) 所以“CONSTRAINT”子句是可选的。 你为什么要包括它或不包括它? 如果你离开它MySQL是否创build一个外键,但不是一个约束? 还是说它更像是一个“CONSTRAINT”只不过是你FK的一个名字,所以如果你不指定它,你会得到一个匿名的FK? 任何澄清将不胜感激。 谢谢, 阮经天

如何连接列与Laravel 4雄辩?

我有一张名为tenantdetails的表格 Tenant_Id | First_Name | Last_Name | …….. 我想通过MySQL的连接函数检索First_Name和Last Name作为一列。 所以我写在我的controller如下 $tenants = Tenant::orderBy('First_Name')->lists('CONCAT(`First_Name`," ",`Last_Name`)','Tenant_Id'); 但是结果如下错误: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`," ",`First_Name`)`, `Id` from `tenantdetails` order by […]

使用MySQLstream式传输大型结果集

我正在开发一个使用大型MySQL表的Spring应用程序。 加载大型表时,我得到一个OutOfMemoryException ,因为驱动程序试图将整个表加载到应用程序内存中。 我试过使用 statement.setFetchSize(Integer.MIN_VALUE); 但是然后每个ResultSet我打开close() ; 在线寻找我发现发生这种情况是因为它会在closuresResultSet之前加载任何未读的行,但事实并非如此,因为我这样做: ResultSet existingRecords = getTableData(tablename); try { while (existingRecords.next()) { // … } } finally { existingRecords.close(); // this line is hanging, and there was no exception in the try clause } 挂起发生的小表(3行)以及如果我不closuresRecordSet(发生在一个方法),然后connection.close()挂起。 堆栈跟踪: SocketInputStream.socketRead0(FileDescriptor,byte [],int,int,int)行:不可用[native方法] SocketInputStream.read(byte [],int,int)行:129 ReadAheadInputStream.fill(int)行:113 ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(byte [],int,int)行:160 ReadAheadInputStream.read(byte [],int,int)行:188 MysqlIO.readFully(InputStream,byte [],int,int)行:2428 MysqlIO.reuseAndReadPacket(Buffer,int)行:2882 MysqlIO.reuseAndReadPacket(缓冲区)行:2871 MysqlIO.checkErrorPacket(int)行:3414 […]

Rails:在数据库中强制空string为NULL

有没有一种简单的方法(即configuration)强制ActiveRecord在数据库中保存空string为NULL(如果列允许)? 这样做的原因是,如果数据库中没有默认值的情况下有一个NULLablestring列,则不设置此值的新logging将包含NULL,而将此值设置为空string的新logging不会为NULL,到我想避免的数据库中的不一致之处。 现在我在模型中做这样的事情: before_save :set_nil def set_nil [:foo, :bar].each do |att| self[att] = nil if self[att].blank? end end 哪些工作,但不是很有效率或干。 我可以把这个分解成一个方法,并将其混合到ActiveRecord中,但是在我走下这条路线之前,我想知道是否有办法做到这一点。