标量子查询

时间:2012-08-09 06:11:21

标签: mysql sql subquery

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

2 个答案:

答案 0 :(得分:4)

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

SELECT (select s2 FROM t1 limit 1);

SQLFiddle example

答案 1 :(得分: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;