2012-02-08 4 views
0

Part1。 2つの異なる 'AS'列の値を検索するにはどうすればいいですか?MySQLではどのように 'AS'列でBETWEENを使用しますか

パート2。最も近い5つの値を98にリストするにはどうすればよいですか?クエリの

例:パート1については

select 
    TITLE.name, 
    (TITLE.value-TITLE.msp) AS Lower, 
    (TITLE.value+TITLE.msp) AS Upper 
FROM TITLE 
WHERE 98 BETWEEN Lower AND Upper; 

答えて

3

)、あなたは同じ副選択に述語(WHERE一部)と改名予測(SELECT一部)を使用することはできませんように、ネストされたSELECTを使用する必要があります。パート2については

)、98

SELECT t.* FROM (
    SELECT 
    TITLE.name, 
    (TITLE.value-TITLE.msp) AS Lower, 
    (TITLE.value+TITLE.msp) AS Upper, 
    (TITLE.value) AS Value 
    FROM TITLE 
) t 
WHERE 98 BETWEEN t.Lower AND t.Upper 
ORDER BY ABS(98 - t.Value) ASC 
LIMIT 5 
+0

ERROR 1248(42000)への最小の絶対差でトップ5の注文を取得するためにORDER BY .. LIMITを使用します。すべての派生テーブルは、独自の別名を持っている必要があります。これは私がこの正確な例で得られるエラーです。 – stackoverflow

+1

@Jammin:私はその特定のMySQL制限を忘れていました。アップデート –

+0

をご覧ください。お返事ありがとうございます。しかし、何を参照していますか? – stackoverflow

関連する問題