3
CREATE TABLE t1 (s1 INT, s2 CHAR(5) NOT NULL);
INSERT INTO t1 VALUES(100, 'abcde');
SELECT (SELECT s2 FROM t1);

当我在 MySql DB 中执行时,它给出了类似 1065 的语法错误,select 语句没有执行,这是根据 MySql 调用标量子查询,点击链接获取更多信息 http://dev.mysql.com/doc/refman/5.1/ en/scalar-subqueries.html

4

2 回答 2

4

要返回标量值,您的子查询必须返回 ONE 行和 ONE 字段。因此,您应该使用 WHERE 或使用 MySQL LIMIT 语句来限制子查询中的行。例如:

SELECT (select s2 FROM t1 limit 1);

SQLFiddle 示例

于 2012-08-09T11:47:51.730 回答
2

您的 select 语句中没有FROM子句:

SELECT (SELECT s2 FROM t1)
FROM ...?

请注意,这仅在t1. t1否则,您将需要某种方式从您需要的一行中获取:

SELECT (SELECT s2 FROM t1 WHERE ...)
FROM ...

这种查询的有效示例如下:

SELECT (SELECT s2 FROM t1 WHERE s1 = 100), t2.id, t2.name
FROM t2;
于 2012-08-09T06:15:45.883 回答