草庐IT

php - SQL查询以获取列中的值在另一个表中不存在的行

我有一个产品表,其中有一列包含以空格分隔的ID列表(例如:“2342365”),该列称为“类别”。数字引用另一个表(类别)中的行ID。我需要提取所有产品行,其中空格分隔列表中的所有ID都指向类别表中不再存在的行。我知道这在很长一段时间内都不是最好的数据库设计,但是我已经在旧系统上完成了这项任务。我什至不确定是否可以完全使用SQL语句来完成,但由于产品表上的记录数量庞大,使用PHP逻辑来确定要返回的行会更慢。但是,如果那是唯一的方法,那就是我会做的! 最佳答案 SELECTm.*FROMmytablemLEFTJOINcategori

php - MySQL SQL 获取表中的最新记录?

我有一个sql语句,如下所示,试图检索表中的最新条目。我有两个问题:按ID或按日期排序哪个更好?如何重写此sql语句以按日期重新排序?SELECTid,comment,DATE_FORMAT(entry_date,'%W%H:%i')FROMcommentsORDERBYidDESCLIMIT10 最佳答案 这取决于你所说的最近的意思:如果您指的是最近创建的记录,那么(在大多数情况下)通过主键id就可以了。如果您指的是最近更新的记录,那么肯定是按日期。要按日期排序,只需更改字段名称:ORDERBYentry_dateDESC

mysql - 如果计数大于 20,如何从表中删除

我有一个mysql表,在添加其他记录之前我只需要包含20条最新记录。每天都会添加新行,因此我希望它首先从最早的开始删除大于允许的20条记录。该表包含一个自动递增的“id”列,因此我可以轻松确定哪些是最早的记录。感谢您的帮助。 最佳答案 您可以在查询中使用LIMIT关键字指定偏移量,以便保留最新的20行。然而,根据MySQL的文档,没有简单的方法来限制从一个偏移量一直到最后一个偏移量;相反,他们建议:Toretrieveallrowsfromacertainoffsetuptotheendoftheresultset,youcanus

mysql - 克服 MyISAM 表中 2^32 行的 MySQL 限制

我想在MySQL中创建一个MyISAM表(尝试了5.0.x和5.1.x的各种版本),它允许超过2^32行。实现这一点的方法是让MySQL使用8字节而不是4字节的行指针。这是MySQL手册中的引述:IfyoubuildMySQLwiththe--with-big-tablesoption,therowlimitationisincreasedto1.844E+19rows.SeeSection2.3.2,“TypicalconfigureOptions”.BinarydistributionsforUnixandLinuxarebuiltwiththisoption.听起来很简单,对吧?

sql - 删除大型 MySql 表中的重复项

我有一个关于MySql的问题。我有一个包含7.479.194条记录的表。有些记录是重复的。我想这样做:insertintonew_tableselect*fromold_tablegroupbyold_table.a,old_table.b所以我会删除重复的条目...但问题是这是一个很大的数据量。该表是MyIsam。这是示例数据-我想按城市分组,short_ccode...idcitypost_codeshort_ccode----------------------------------------------------4732875Celje3502si4733306Celje

MySQL查询求和另一个表中的值

我有几个具有父子关系的表。例如,我想对子表的一列应用求和函数,并将其与父表的所有数据一起返回。Parent_tableID,Date,TitleChild_tableID,another_id,column_to_sum//(IDisforeignkeypointingtoParent_table)SampleDatainParent_table1,22-11-201000:00:00,'SomeTitle'2,13-11-201000:00:00,'SomeTitle2'SampleDatainChild_table1,1,101,2,111,8,32,5,112,8,6查询的输出应

java - 如何从 mysql 表中获取最后 3 个不同的 ID

好的,基本上我有我的数据库表。第一列是id。第二个是pkg_id。第三个并不重要,第四个是pkg_id所在的前一个ID。我需要从表中提取最后3个pkg_id。所以基本上我需要提取最后3个17879pkg_id和最后3个3075。所以在这个例子中我需要提取id9、7、6用于17879和id8、5、3用于3075。我无法理解它。我确实可以访问以前的ID。所以你看到对于id9,它说17879在id7中是最后一个。id8在id5中是最后一个。如果有人能帮我写一个查询就好了。我还使用Java进行数据库访问,因此它不必只在mysql中。非常感谢。 最佳答案

SQL...如何使用同一表中其他行的数据更新行?

我正在使用MySQL服务器,并且我有一个表,其中某些行缺少数据。我想使用其他行的信息更新行。我的表格看起来像:id,signin,deviceId,deviceModel1,2010-10-12,9ABC9,2,2010-10-12,3E44F,3,2010-10-13,D3453,4,2010-10-14,D3453,5,2010-10-14,D3453,HW16,2010-10-12,3E44F,HW27,2010-10-12,9ABC9,HW1对于前几个条目,deviceModel字段为空。我想使用在同一表的其他行中为deviceId找到的deviceModel更新此值。在上面的

mysql - 限制在特定表中使用 Select * in MySQL

我有一个包含一些敏感数据的表,我想在已经采取的措施之外进一步保护这些数据。如果发生入侵导致攻击者获取我们的PHP源代码,我想进一步保护数据库中的一些数据。数据已经在数据库中加密,加密key安全地存储在源代码之外,但不幸的是,这些只是延迟,希望能让我们有时间发现入侵并关闭系统。但是,代码的逆向工程在技术上是可行的。作为故障保险,我想限制针对特定表的选择语句。我们的代码永远不需要一次从表中检索多个记录。有没有一种方法可以限制从MySQL的管理端从表返回的行数,以便像SELECT*FROMsecure_data_table;这样的查询?不可能吗? 最佳答案

mysql - 使用 MySQL,如何在同一个表中不存在该值的情况下插入表中?

insertintostudent(FirstName,AGE,CITYID)values('guna','26','1')select*fromstudentWHEREFirstName!='guna';此查询显示错误。我无法将FirstName列设为唯一。请给出除此之外的想法。谢谢 最佳答案 INSERTINTOstudent(....)WHEREFirstNameNOTIN(SELECTFirstNameFROMstudent)修改和测试后:INSERTINTOstudent(FirstName,age,cityid)SELE