草庐IT

mysql - 限制用户更改 3 小时前在 mysql 中插入的行

我在3小时前插入了一些行,我不希望这些行发生变化。我如何编写一个sql语句,将当前时间与行中的时间戳进行比较,并在满足上述条件时限制用户更改它。谢谢 最佳答案 如果你想通过使用mysql来完成它,你将不得不使用INTERVAL语句,这将允许你“添加”时间到日期函数......例如:UPDATEtableSETdata='whatever'WHERENOW()-INTERVAL3HOUR您可以在此处找到更多信息和示例:DateandTimeFunctions 关于mysql-限制用户更改3

mysql - 排除具有多对多关系的行

我有三个表:posts、tags和posts_has_tags(它们促进了posts和tags之间的多对多关系)。一篇文章可以有任意数量的标签。“帖子”表包含以下列:身份证件文本“标签”表有这些:身份标签姓名至于“posts_has_tags”表:posts_idpoststags_idtags我不能做的是想出一个查询来选择所有帖子,除了那些在分配给它们的“名称”列中有一个或多个标签具有特定值的帖子。它似乎应该包含一个“NOTEXISTS”,但我真的不能完全理解它。提前感谢您的帮助。编辑:另外,是否可以同时限制结果集为某些标签?例如:排除标签:a,b包含标签:c带有标签“a”、“f”的

MySQL - 查询以合并表中的行与字段中的重复值

我是数据库方面的新手,非常感谢您的帮助,我有一个以下格式的数据库:IDNbrData1Data2Data311a21b31c42d52e62f并且希望有一种方法可以使用MySQL查询提取以下格式的数据:NbrData1Data2Data31abc2def我知道以非规范化格式获取数据不是最佳做法,但遗憾的是我无法更改源数据。感谢您的帮助! 最佳答案 InsertintonewtableselectID,Nbr,max(Data1),max(Data2),max(Data3)fromtablegroupbyNbr试试这个,让我知道它是否

php - 在 MySQL PDO 中使用带有 % 的 LIKE 时,不返回带有大写字母的行

好吧,假设我正在搜索“PersonName”,然后输入“person”,它没有找到这个人,但“Person”找到了,有没有办法告诉它寻找与我的输入类似的任何东西?我正在像这样简单地进行搜索:$db->sqlquery("SELECT`user_id`FROM`users`WHERE`username`LIKE?",array("%$user%")); 最佳答案 这取决于字段的排序规则。如果排序规则以_cs结尾则区分大小写,如果以_ci结尾则不区分大小写。更改字段的属性,索引/搜索将随之而来。

mysql - 选择特定字段的值超过同一字段最大值一半的行

我想知道是否有一种方法可以选择特定字段的值超过同一字段最大值一半的行。例如,我们有一个包含3个字段(id、name、rate)的结果集,其中rate是一个别名。如果最大速率为70,则查询应返回所有rate>35的行(35是70的一半).类似于:SELECT*FROM(Aheavyandlargeselect)asrWHEREr.rate>MAX(rate)/2请注意,我不知道最大速率是多少,并且想在单个查询中完成。更新mainselect是一个非常繁重的查询,而rate是一个别名,所以使用maxrate的子查询需要再次编写那个繁重的查询。 最佳答案

php - 在 MySql 中选择匹配一对多关系右侧的行

我有4张table。一份用于公司,一份用于产品,一份用于公司地址,一份用于公司董事。产品、主管和地址表与公司表是一对多关系。所以一个公司可以有很多产品、很多地址和很多董事。CREATETABLEIFNOTEXISTS`companies`(`company_id`int(11)NOTNULLAUTO_INCREMENT,`company_name`varchar(50)NOTNULL,PRIMARYKEY(`company_id`))ENGINE=InnoDBDEFAULTCHARSET=latin1AUTO_INCREMENT=3;CREATETABLEIFNOTEXISTS`pro

mysql - 如何选择两列不等于值的行?

我有一个表格,其中每一行都有一个类别和子类别。我想选择除特定category和subcategory以外的所有行。我的数据是这样的:|category|subcategory||----------|-------------||Color|Orange||Fruit|Apple||Fruit|Orange||Fruit|Banana|我希望我的结果看起来像这样:|category|subcategory||----------|-------------||Color|Orange||Fruit|Banana|这是我试过但显然行不通的方法:SELECT*FROMtableWHERE(

sql - MySQL InnoDB 只锁定受影响的行?

我有一个包含用户的InnoDB表,如下所示:+--------------+-----------------------+|user_id|name|+--------------+-----------------------+|1|Bob||1|Marry||2|Bob||1|John||3|Bob||2|Marry|+--------------+-----------------------+在每次插入时,我将user_id递增1,例如,Bob的下一个user_id将为4我使用这个查询来做到这一点:INSERTINTOusers(user_id,name)SELECT1+co

mysql - SQL 选择带有 added_date 和 updated_date 的行

我正在尝试按added_date选择行顺序,或者如果行已更新,则按updated_date排序。默认更新日期为Null。对于上表日期在(dd-mm-yy)中给出。对于下表,第一行在2月2日添加,第二行在2月1日添加,因此使用,select*fromtablenameorderbyadded_datedesc;我得到了最新的行,但是如果有任何行被更新,那么这个更新的行就成为最新的行。对于第二行,该行在2月1日添加,但在2月3日更新,因此它成为最新行。如何获取添加和更新日期的记录??idtitlenameadded_dateupdated_date1asdrff02-02-2013NULL

MySQL:选择彼此在日期范围内的行

我有一个像下面这样的MySQL:Events+----+------+--------------------------------+|id|name|sites_id|created|+----+------+--------------------------------+|1|test|1|2013-11-0100:00:00||2|test|1|2013-11-0200:00:00||3|test|2|2013-11-1300:00:00||4|test|3|2013-11-1400:00:00||5|test|4|2013-11-2500:00:00|+----+-----