2017-01-02 12 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 comapny_id,company_name FROM table LIMIT 5; 


1275992 
1758051 
2990914 
5241776 
5344925 

:この

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 

は、しかし、私はこのような2番目のSQLを使用するように結果が表の5行ではないことが分かります。これらのフィールドの違いは、company_idが主キーであることです。company_nameはMULのタイプです。大変ありがとうございます。

+0

フォーマットが美しくないと申し訳ありません – DLsky

答えて

4

結果セットには、テーブルの最初の5行である535行が含まれている必要がありますが、この使用についての例外はありますか?

このステートメントの最初の部分だけが正しいです。クエリはクエリから5行を返します。しかし、それらは5つの不確定な行です。

SQLテーブルは、を順不同で表します。セット。したがって、テーブルには最初の5行はありません。結果セットを注文するには、order by句を含める必要があります。このようなidは、行がテーブルに挿入される順序を取得するため、この目的のために自動増分されたIDが使用されることがよくあります。

+0

あなたが言っているように、SQLテーブルは順序付けられていないセットを表しますが、リミット5句が5行戻ってくることを意味しますか?今日私はSELECT company_name FROM table LIMIT 5でsqlをテストしています;そしてcompany_name、tel FROM table LIMIT 5をSELECTして、別のcompany_nameリストで結果セットを得ました。大部分のケースでは、異なるフィールドを使用すると結果セットの順序は変更されません。 – DLsky

+0

異なる結果セットが異なるフィールドのみを使用する理由を教えてください。他のテーブルを使用して同じ結果セットを取得するので、私は特定のフィールドが同じでなければならないことを意味します。 – DLsky

+0

@DLsky。 。 。 'order by'なしで' limit'を使うと、不確定な順序でデータを得ることができます。期間。同じクエリを2回実行すると、行が異なる可能性があります。 –