0

表Aの会社名とその詳細を表示しているページがあります。次に、会社を表示し、その名前を「Company_one」とすると、次の会社と前の会社とその詳細などをアルファベット順に並べ替えます。

テーブル内のデータは並べ替えられていません。データを取得するときに保存されます。

では、アルファベット順にソートされた前のレコードと次のレコードが1つだけになるように、どのようなクエリを作成する必要がありますか?Plzヘルプ!!

4

3 に答える 3

7

単一のクエリでそれを行うための良い方法はありません。2つのクエリを実行するだけです。

前のものを取得するには:

SELECT * FROM companies
WHERE name < variable_with_current_name
ORDER BY name DESC
LIMIT 1

次のものを手に入れるには:

SELECT * FROM companies
WHERE name > variable_with_current_name
ORDER BY name ASC
LIMIT 1
于 2010-03-05T11:51:52.003 に答える
0

テーブルを並べ替えるには、 sort句を使用する必要があります。のプロトタイプsortは次のとおりです。

sort by fieldname

クエリの例:

select * from your_table sort by company asc

レコードを制限する場合は、次のlimit句を使用します。

select * from your_table sort by company asc limit 0, 1
于 2010-03-05T11:51:22.133 に答える
0

Dominicの回答に基づいて、とを組み合わせることで、単一のクエリを使用して同じ結果を得ることができWHEREますOR

例えば:

SELECT * FROM `companies`
WHERE (
    `name` = IFNULL(
        (SELECT `name` FROM `companies` 
            WHERE `name` < 'variable_with_current_name'
            ORDER BY `name` DESC
            LIMIT 1)
        , 0)
OR
    `name` = IFNULL(
        (SELECT `name` FROM `companies` 
            WHERE `name` > 'variable_with_current_name'
            ORDER BY `name` ASC
            LIMIT 1)
        , 0)
) 

お役に立てば幸いです。

于 2015-03-01T08:57:51.460 に答える