1

構文エラーが発生しているのですが、その理由を教えてもらえますか?

SELECT  c.clientid, c.clientname, c.billingdate, 
      (SELECT TOP 1 previousbalance FROM invoice i 
          WHERE i.client = c.clientid ORDER BY i.invoiceid DESC) AS remaining 
FROM client c 
ORDER BY clientname

clientid二次選択が行っているのは、請求書テーブルでその最新のレコードを取得することです。

プログラム-HediSQl

SQL

そしてここにエラーがあります:

SQLエラー(1064):SQL構文にエラーがあります。1行目の「1previousbalanceFROMinvoice i WHERE i.client = c.clientid ORDER BY i.invoicei」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください* /

4

3 に答える 3

3

推測するだけですがTOP 1LIMIT 1またはに置き換える必要があることを示している可能性がありますWHERE ROWNUM < 2 LIMIT 1。どんなDBを使っていますか?

于 2012-08-29T05:32:54.263 に答える
1

LIMIT代わりにTOP次のように使用する必要があります。

SELECT  c.clientid, c.clientname, c.billingdate, 
   (SELECT previousbalance FROM invoice i 
     WHERE i.client = c.clientid ORDER BY i.invoiceid DESC LIMIT 1) AS remaining 
FROM client c 
ORDER BY clientname

このSQLFiddleを参照してください

于 2012-08-29T05:39:25.250 に答える
0

使用している構文はSQLServerで機能します。エラーメッセージはMySQLからのものです。

これを試して:

SELECT c.clientid, 
       c.clientname, 
       c.billingdate, 
       (
       SELECT previousbalance 
       FROM invoice i 
       WHERE i.client = c.clientid 
       ORDER BY i.invoiceid DESC
       LIMIT 1  
       ) AS remaining 
FROM client c 
ORDER BY clientname
于 2012-08-29T05:34:47.413 に答える