在MySQL中,如何将BETWEEN与';AS';柱
第1部分。如何在两个不同的“AS”列上搜索值 第2部分。如何列出与98最接近的前5个值? 查询示例:在MySQL中,如何将BETWEEN与';AS';柱,mysql,database,between,Mysql,Database,Between,第1部分。如何在两个不同的“AS”列上搜索值 第2部分。如何列出与98最接近的前5个值? 查询示例: select TITLE.name, (TITLE.value-TITLE.msp) AS Lower, (TITLE.value+TITLE.msp) AS Upper FROM TITLE WHERE 98 BETWEEN Lower AND Upper; 对于第1部分),您需要使用嵌套的select,因为您不能将重命名的投影(selectpart)用作同一子选择中的
select
TITLE.name,
(TITLE.value-TITLE.msp) AS Lower,
(TITLE.value+TITLE.msp) AS Upper
FROM TITLE
WHERE 98 BETWEEN Lower AND Upper;
对于第1部分),您需要使用嵌套的select,因为您不能将重命名的投影(select
part)用作同一子选择中的谓词(WHERE
part)
对于第2部分),使用ORDER BY。。限制
以获得前5名。按最小绝对差排序至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
对于第1部分),您需要使用嵌套的select,因为您不能将重命名的投影(select
part)用作同一子选择中的谓词(WHERE
part)
对于第2部分),使用ORDER BY。。限制
以获得前5名。按最小绝对差排序至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
错误1248(42000):每个派生表都必须有自己的别名。这就是我在这方面的错误example@Jammin:哎呀,我忘了那个特定的MySQL限制。有关响应,请参阅UpdateAnks。但是t.*指的是什么?@Jammin:
t.*
指的是嵌套的select/DERISTED表中的所有字段。即名称
,下部
,上部
,值
。将t.*
替换为*
或t.name,t.Lower,t.Upper
,如果您愿意的话。错误1248(42000):每个派生表都必须有自己的别名。这就是我在这方面的错误example@Jammin:哎呀,我忘了那个特定的MySQL限制。有关响应,请参阅UpdateAnks。但是t.*指的是什么?@Jammin:t.*
指的是嵌套的select/DERISTED表中的所有字段。即名称
,下部
,上部
,值
。将t.*
替换为*
或t.name,t.Lower,t.Upper
,如果您愿意的话