8

Slick 1.0.0 を使用して、次の SQL ステートメントに相当する行数を返すクエリを作成しようとしています。

SELECT COUNT(*) FROM table;

私がこれまでに持っているものは次のとおりです。

val query = for {
  row <- Table
} yield row
println(query.length)

これは印刷されscala.slick.ast.FunctionSymbol$$anon$1@6860991fます。また、query.lengthタイプのようscala.slick.lifted.Columnです。クエリを実行する方法が見つかりません。ドキュメントや他の場所で見つけることができるすべての例は、動作しないColumnか、ScalaQuery用であり、もはや機能しません。

これを実行するにはどうすればよいですか?

4

3 に答える 3

4

結果の sql を確認することはできませんでしたが、.list を削除することで短いソースを取得できます。

Query(MyTable.length).first
于 2013-07-15T19:30:46.807 に答える
4

これらのいずれかがうまくいくはずです:

Query(MyTable).list.length

また

(for{mt <- MyTable} yield mt).list.length

また

(for{mt <- MyTable} yield mt.count).first

アップデート:

H2 データベース ログを印刷すると、最後のクエリのこれが表示されます。これは最適に見えます。

 03:31:26.560 [main] DEBUG h2database - jdbc[2]
 /**/PreparedStatement prep10 = conn1.prepareStatement("select select count(1) from \"MYTABLE\" s5", 1003, 1007);
于 2013-02-12T18:32:05.747 に答える
2

使用する:

val query = for(row <- Table) yield row 
println(Query(query.count).first)

これcountは、「SELECT COUNT(*) FROM テーブル」と同等です。最初で唯一の行をfirst取得するには、カウントを取得するために使用する必要があります。

于 2013-02-12T16:25:41.340 に答える