【问题标题】:Scalar sub queries标量子查询
【发布时间】:2012-08-09 06:11:21
【问题描述】:
CREATE TABLE t1 (s1 INT, s2 CHAR(5) NOT NULL);
INSERT INTO t1 VALUES(100, 'abcde');
SELECT (SELECT s2 FROM t1);

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

【问题讨论】:

    标签: mysql sql subquery


    【解决方案1】:

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

    SELECT (select s2 FROM t1 limit 1);
    

    SQLFiddle example

    【讨论】:

      【解决方案2】:

      您的选择语句中没有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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多