0

クエリについて考えてみましょう。

SELECT n.nid, 
    (select count(*) as count from view_log where id = n.nid) AS the_count,
    (the_count + 1) as the_bumped_count
   FROM node n

これを実行すると、が得られUnknown column 'the_count' in 'field list'ます。これを回避する方法はありますか?クエリに表示され、使用できるようになっているようthe_countですが、明らかにそうではありません。ところで、私も試しSUM(the_count, 1)ましたが、それも失敗しました。ありがとう!

4

2 に答える 2

2

ALIAS計算を行いたいのと同じレベルで定義された を使用することはできません。

SELECT n.nid, 
    (select count(*) as count from view_log where id = n.nid) AS the_count,
    ((select count(*) as count from view_log where id = n.nid) + 1) as the_bumped_count
   FROM node n

またはサブクエリを使用することをお勧めします。

SELECT  nid, 
        the_count, 
        the_count + 1 AS the_bumped_count
FROM
(   
    SELECT n.nid, 
            (select count(*) as count from view_log where id = n.nid) AS the_count
    FROM node n
) s
于 2013-02-14T16:23:27.667 に答える
2

これもうまくいくと思います.1回だけカウントする必要があります:

SELECT nid, the_count, the_count+1 as the_bumped_count
FROM (
    SELECT n.nid,
        COUNT(v.*) the_count, 
    FROM node n
       LEFT JOIN view_log v on n.nid = v.id
    GROUP BY n.nid
) t

または、構文に戻るには:

SELECT nid, the_count, the_count+1 as the_bumped_count
FROM (
    SELECT n.nid,
        (select count(*) as count from view_log where id = n.nid) AS the_count
    FROM node n
) t

幸運を。

于 2013-02-14T16:26:10.153 に答える