MySQL:id|name|------------1|Joe|2|Craig|3|Shawn|4|Ryan|5|Seth|PHP:$a=mysql_query("SELECT*FROMtable_nameORDERBYnameDESC");不过我想做的是,我想从id:3开始,所以它应该输出:3,4,5,1,2 最佳答案 您可以在ORDERBY中使用表达式:SELECTid,nameFROMtable_nameORDERBYid结果:3Shawn4Ryan5Seth1Joe2Craig我还建议您不要使用SELECT*而是显式列出列。
有没有办法确定一个表(可能是一个非常大的表)是否具有连续/连续的自动递增主键ID?是否有SQL查询方法来确定这一点?假设有人从一个非常大的表中随机删除了一些行。我需要知道这已经发生了。e.g.tableXYZid1234tableabc124对数据完整性感到好奇。我想要一种SQL查询方法,以便让事情变得简单,而不必编写PHP脚本来针对数据库运行。 最佳答案 您可以比较这两个值:SELECT(MAX(ID)-MIN(ID))+1,--e.g.ID2-ID1=1(+1)=2rowsCOUNT(ID)FROMTable如果表仍然是连续的,
基本问题如何从表映射器中获取“类型”列作为整数值?我有一个运行网站的PHPZendFramework1.12应用程序。MySQL内部有多个包含多个列的表。在两个表中我使用了SET类型。该列被命名为“type”和“set('LOCAL','EXTERNAL')'”。请不要将此字段类型与ENUM混淆!到目前为止没有问题,查询表并获取类型列为INT或STRING不是问题:$Sql=$Db->select()->from('tablename',['type_as_int'=>new\Zend_Db_Expr('type+0')]);//returnsINT(ifbothareselected
是否有任何可扩展的方法来使用mysqlIN或类似的东西来选择数千行?例如SELECT*FROMawesomeTableWHEREidIN(1,2,3,4......100000)这是可能的还是我只是在做梦?模式是InnoDB,如果另一个提供更具可扩展性的解决方案,则可以更改。作为引用,我从Solr返回的一组ID中获取搜索结果。我想使用mysql进行最终检索,因为它会使这些结果的排序和最终过滤更加容易(我不会详细说明原因)。编辑:查询可以使用LIMIT子句,只要IN仍然包含所有100000个id例如SELECT*FROMawesomeTableWHEREidIN(1,2,3,4.....
在对具有2个值的PRIMARY键(使用IN或OR构造)执行INNERJOIN时,在EXPLAINSELECT中得到“检查每条记录的范围(索引映射:0x1)”这里是查询:SELECT*FROMmessageASmINNERJOINuserASuONu.id=m.sender_idORu.id=m.receiver_id在做解释时,它给了我:+----+-------------+-------+------+---------------+------+---------+------+-------+-------------------------------------------
我在MySQL数据库中有一个名为products的表。products看起来像这样:idnamedinstrengthactivedeleted1APATEST0024637425104APABOB0024637550105APATIRE0024688850107APAROT00521414100109APAAPA01142124100106APACODE00121212150108APASERV0001114560010显然,我遗漏了几列对我的问题不重要的内容。当我查询此表时,我将按几个不同列之一进行排序(用户界面允许个人用户更改排序列和顺序),并且我可能有一个搜索子句,在这种情况下
我有三种种类的表主键:INT使用数据库供应商(MySQL)的AUTO_INCREMENT容量自动生成的主键CHAR(X)将用户可读值存储为键的主键(其中X是一个数字且50复杂的主键,由表的2或3个字段组成。此外,还有一些字段可能存在(或不存在):版本,INT字段。createdBy,VARCHAR(60)字段,以及lastUpdatedBy,VARCHAR(60)字段(还有更多字段,但这些涵盖了一个基本示例)。上面的一些例子:表1idint主键auto_increment版本整数值char(10)创建者为varchar(60)lastUpdatedByvarchar(60)表2idch
所以,我刚刚启动了一个SpringHibernate应用程序,但我似乎无法正确获取我的映射文件。我正在使用MySql5和一个自动递增键。这是我的映射文件的ID部分。这是生成的SQLinsertintocontact(title,first_name,middle_name,last_name,suffix,job_title,dob,passport_number,passport_expiration,employer,dietary_restrictions,secondary_contact_fname,secondary_contact_lname,secondary_cont
我正在实现GoogleOAuth2.0并注意到GoogleOAuth返回的唯一用户ID的长度为21位。我认为BIGINT(20)足以满足此需求,但我现在对看到GoogleOAuth返回的用户ID的长度感到困惑。关于我应该如何去做的任何想法? 最佳答案 为了保存id,你应该使用varchar,因为你试图保存的数据来自第三方,你不能确定该值是否只是数字(虽然谷歌用户id只是数字,但公约仍然不受我们控制)。 关于php-MYSQL的GoogleOAuth2.0用户ID数据类型,我们在Stack
我需要使用mySQL获取ID周围的ID。例子:表中的ID:2,4,5,9,11,15,19,22,25例如,我需要知道ID9周围的5个ID。查询应返回:4,5,9,11,15谢谢! 最佳答案 一个可能的解决方案是计算每个ID减去您的ID的绝对值。对结果进行排序并将结果集限制为5条记录。SQL语句SELECTABS(ID-9),*FROMMyTableORDERBYABS(ID-9)LIMIT5编辑(感谢ypercube指出此解决方案中可能存在的缺陷)如果意图是从左边获取2个id,从右边获取2个id,语句可以调整如下SELECT*FR