2017-01-02 84 views
0
SELECT id,name,info FROM table LIMIT 5 

结果集应该包含5行至少是表的前5行,但是有关此用法的任何异常?这样.the表:MySQL限制条款非常规问题

SELECT * FROM table limit 10; 

1. company_id company_name   tel 
1 TCL集团股份有限公司 0752-2288333  
2 UNITEDSTACK(北京)科技有限公司 15727325616 
3 《市政技术》杂志社有限公司 13401070358 
4 《网络安全技术与应用》杂志社有限公司 010-62765013  
5 《艺术市场》杂志社股份有限公司 64271947 
7 一呼医知己健康咨询(北京)有限公司 010-62957992 
8 一呼(北京)电子商务有限公司 62957992  
9 一汽轿车股份有限公司 0431-85782608 
10 一通万通商务服务(北京)有限公司 010-68061805 

我用的第一个SQL的结果是正常的:像这样

SELECT company_id,company_name,tel FROM table LIMIT 5; 

1. 1 TCL集团股份有限公司 0752-2288333 
2 UNITEDSTACK(北京)科技有限公司 15727325616 
3 《市政技术》杂志社有限公司 13401070358 
4 《网络安全技术与应用》杂志社有限公司 010-62765013 
5 《艺术市场》杂志社股份有限公司 64271947 

但是我用的是第二个这样的SQL:

SELECT comapny_id,company_name FROM table LIMIT 5; 


1275992 
1758051 
2990914 
5241776 
5344925 

我们看到结果显然不是表格的第5行,这些文件的区别在于company_id是主键,company_name是MUL的一种类型,你可以帮助我吗?非常感谢!

+0

对不起,格式不漂亮 – DLsky

回答

4

结果集应该包含5行这是表的前5行 ,但是有关此用法的任何异常?

只有本声明的第一部分是正确的。您的查询返回查询中的5行。但是,这些是5个不确定的行。

SQL表格代表无序集合。因此,表格中没有前五行。如果您想要订购结果集,那么您需要包含一个order by子句。通常,自动递增的id用于此目的,因为这样的id捕获行插入到表中的顺序。

+0

正如你所说,SQL表格代表无序集合,这是否意味着限制5条款返回5行是不确定的?今天我用SELECT company_name FROM table LIMIT 5来测试sql; SELECT company_name,tel FROM table LIMIT 5,我得到了带有不同company_name列表的结果集。在大多数情况下,使用diffrent fileds时,结果集顺序不会改变? – DLsky

+0

你能告诉我为什么我得到不同的结果集只使用不同的字段?因为我得到相同的结果集使用其他tables.I意味着具体领域应该是相同的。 – DLsky

+0

@DLsky。 。 。当您使用'limit'而没有'order by'时,您可以以任何不确定的顺序获取数据。期。两次运行相同的查询可能会导致不同的行。 –