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

MySql DBで実行しているとき、selectステートメントが実行されていない1065のような構文エラーが発生します。これは、MySqlによるスカラーサブクエリの呼び出しです。詳細については、リンクをたどってください http://dev.mysql.com/doc/refman/5.1/ en / scalar-subqueries.html

4

2 に答える 2

4

スカラー値を返すには、サブクエリが 1 つの行と 1 つのフィールドを返す必要があります。したがって、WHERE を使用するか、MySQL LIMIT ステートメントを使用して、サブクエリの行を制限する必要があります。例えば:

SELECT (select s2 FROM t1 limit 1);

SQLFiddle の例

于 2012-08-09T11:47:51.730 に答える
2

FROMselectステートメントに句がありません:

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

これは、 に行が 1 つある場合にのみ機能することに注意してくださいt1。それ以外の場合は、必要な行を 1 つ取得する方法が必要になり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 に答える