0
select 
(SELECT count(ts.student_id) AS studentcount
from tb_student ts
where  ts.tudent_id>101 )as count1,
(SELECT count(tt.teacher_id) AS Totalteacher from tb_teacher tt
 where feedback_id<>0) as count2

これは私にいくつかの結果を与えます

count1   count2
 4         9

場合によっては、カウントは次のように等しくなります

 count1   count2
 9         9

この結果を使用して別のテーブルを更新する必要があります。たとえばcount1=count2 、呼び出されtb_logて設定され たテーブルを更新する場合などです。falg=1

プロシージャを介して実行する以外に、このクエリ内で実行できますか。

4

1 に答える 1

0

これは非常に簡単に行うことができます:

update tb_log
    set falg = 1
    where exists (select count1, count2
                  from (SELECT count(ts.student_id) AS studentcount
                        from tb_student ts
                        where  ts.tudent_id>101
                       ) as count1 cross join
                       (SELECT count(tt.teacher_id) AS Totalteacher
                        from tb_teacher tt
                        where feedback_id<>0
                       ) as count2
                  where count1 = count2
                 )

サブクエリを SELECT 句から FROM 句に移動しました。テーブル参照が FROM 句にあると、クエリを実行しやすくなると思います。これにより、WHERE 句での条件の適用も容易になります。

于 2012-09-13T14:29:36.543 に答える