我有一张桌子,曝光,看起来像这样:
+------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| src | varchar(20) | NO | | NULL | |
| instrument | varchar(10) | NO | | NULL | |
| result | decimal(12,3) | NO | | NULL | |
| instant | bigint(20) | NO | | NULL | |
+------------+---------------+------+-----+---------+-------+
该表用于存储历史风险值,预计会包含偶尔的差距。对于给定的 src 和瞬间,我正在尝试在该目标瞬间或小于目标瞬间的最大瞬间选择所有(仪器、结果、瞬间)。下面的 SELECT 语句正是这样做的。
SELECT * FROM exposure AS e
WHERE e.instant = (SELECT MAX(instant) FROM exposure
WHERE instant <= 1396985195077
AND src = 'testSrc')
AND e.src = 'testSrc';
但是,当我尝试在以下查询中指定我希望选择的列时,MySQL 以 ERROR 1241 (21000) 响应:操作数应包含 1 列。我怀疑它混淆了内部和外部查询。
SELECT (e.instrument, e.result, e.instant) FROM exposure AS e
WHERE e.instant = (SELECT MAX(instant) FROM exposure
WHERE instant <= 1396985195077
AND src = 'testSrc')
AND e.src = 'testSrc';
我的 MySQL 版本字符串是:服务器版本:5.5.34-0ubuntu0.13.04.1 (Ubuntu)。