1. 程式人生 > >mysql裡面的while裡面為什麼會重複輸出最後一個數據

mysql裡面的while裡面為什麼會重複輸出最後一個數據

mysql裡面的while執行機制是先執行再判斷,當監聽語句判斷tag=1的時候,while裡面的語句會繼續執行,但是監聽語句裡面的tag=1會讓fetch語句失效,進而接著執行1select uid語句,所以會輸出兩次最後一個
eg:
create procedure get_all_info12()
begin

declare uid int(5) default 0;
declare tag int(1) default 0;

declare allinfo cursor for select id from stu_info;
declare continue handler for sqlstate '02000' set tag=1;

open allinfo;
while tag=0 do
fetch allinfo into uid;
select uid;
end while;
close allinfo;

end
輸出的資料中,最後兩個資料是相同的
只要在while迴圈體中加判斷就可以去除重複輸出的情況
eg:
create procedure get_all_info()
begin


declare uid int(5) default 0;
declare tag int(1) default 0;


declare allinfo cursor for select id from stu_info;
declare continue handler for sqlstate '02000' set tag=1;


open allinfo;
while tag=0 do
fetch allinfo into uid;
if tag=0 then
select uid;
end if;
end while;
close allinfo;


end

相關推薦

mysql裡面的while裡面為什麼重複輸出最後個數

mysql裡面的while執行機制是先執行再判斷,當監聽語句判斷tag=1的時候,while裡面的語句會繼續執行,但是監聽語句裡面的tag=1會讓fetch語句失效,進而接著執行1select uid語句,所以會輸出兩次最後一個 eg: create procedure

fread 不能讀取最後個數

今天遇到一個問題,fread()竟然不能讀取檔案中的最後一個數據塊。 我定義了一個結構體: Persong { char name[10]; char phone[15]; }以及兩個函式:int insert(Person*person) { F

MySQL查詢個數裡面有多少張表

6. MySQL查詢一個數據庫裡面有多少張表 XXX是你的資料庫名稱 SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES WHERE table_schema = 'XXX' GROUP BY t

輸入10個整數,將其中最小的數與第一個數對換,把最大的數與最後個數對換。寫三個函式; ①輸入10個數;②進行處理;③輸出10個數

import java.util.Scanner; public class Main {     public static void main(String[] args){         Scanner sc = new Scann

實際開發中,獲得到的list為重複最後條資料問題解決

在開發中迴圈把物件中的值賦給list,最後取得list進行返回。老是會出現獲得的list是重複的值,並且值為最後一個物件。 這就是開發中沒有宣告好物件和list的位置。都應該在外面宣告list和物件。 注意:物件要在迴圈裡重新初始化一次,否則最後一個數據會把前面的資料全部覆蓋掉。注意第9

SQL 把個數裡面的某張表裡的資料插入到另外個數裡面張表

insert into 需要插入的表名 select * from 資料庫.dbo.表名 where 插入條件='2016-06-02 00:00:00.000'   insert into inventory_hr select * from CS12.dbo.inventory

ACMNO.37 C語言-數字交換 輸入10個整數,將其中最小的數與第一個數對換,然後把最大的數與最後個數對換。寫三個函式; ①輸入10個數;②進行處理;③輸出10個數

題目描述 輸入10個整數,將其中最小的數與第一個數對換,然後把最大的數與最後一個數對換。 寫三個函式; ①輸入10個數;②進行處理;③輸出10個數。 輸入 10個整數 輸出 整理後的十個數,每個數後跟一個空格(注意最後一個數後也有空格) 樣例輸入 2 1

thinkphp模板裡面判斷一個變數是否存在於個數組中 相當於in_array() in 或range 標籤

thinkphp 模板裡面可以這樣寫包含操作 //in 標籤 <in name="變數名" value="值1,值2,...">要輸出的內容</in> <in nam

mysql刪除資料表中重複記錄保留

刪除資料庫中重複的記錄由兩種形式: 第一種是資料表中所有的欄位都重複,第二種是資料庫中部分欄位重複 這裡針對第二種情況重複: delete from app_user_verify where id not in (select a.id from (

mysql必知必學習筆記(

MYSQL必知必會第三章--瞭解資料庫和表 書中部分程式碼展示: CREATE DATABASE crashcourse; /*建立名為 crashcourse 的新資料庫*/ SHOW DATA

輸入10個數,找出其中絕對值最小的數,將它和最後個數交換,然後輸出這10個數

#include<stdio.h> int main() {        floata[10];        floatA[10];        inti,num=0,min,tem;        for(i=0;i<10;i++)       

mysql必知必》筆記(

一:瞭解SQL         1:列是表中的欄位,所有表都由一個或多個列組成的。行是表中的記錄,表中的資料都按行儲存。 2:表中每一行都應該有可以唯一標識自己的一列或一組列。主鍵(一列或一組列),

觸發器問題(怎樣在個數庫中的觸發器中訪問另個數裡面的表呢)

--如果兩個庫在同一個sql例項中           select   *   from   另一庫.dbo.表             --如果兩個庫在不同的sql例項中           select   *   from   openrowset('sqlole

MySQL必知必:用十張圖講清楚,當你CRUD時BufferPool中發生了什麼!以及BufferPool的優化!

### 一、收到了大佬們的建議 **1、篇幅偏短,建議稍微加長一點。** 這點說的確實挺對,有的篇幅確實比較短,針對這個提議我會考慮將相似的話題放在一篇文章中。但是這可能會導致我中斷每天更新的步調,換成隔幾天發一篇的步調(但是這個系列的文章一定會寫完的!) **2、Buffer Pool、LRU Lis

Mysql分配個數給指定使用者

文章目錄 Mysql分配一個數據給指定使用者 1.使用命令列 1.1 登入root使用者 1.2 建立新使用者 1.3 建立資料 1.4 新增使用者許可權 2.使用Navicat工具

mysql:將資料庫複製到另個數

操作步驟:     1.        雙擊開啟資料庫1     2.     &nb

主要是解決,作為個數共享的資料庫,存在的資料庫統計,然後將計算的資料量輸出到自己使用的資料庫,進行主頁面展示。

1、主要是解決,作為一個數據共享的資料庫,存在的資料庫統計,然後將計算的資料量輸出到自己使用的資料庫,進行主頁面展示。 1 1、第一步,可以查詢自己作為目標表的資料表的資料量。方便做條件過濾,如果資料量大於0,那麼查詢出所有欄位,然後將is_sync標識位標為1。 2 select co

給定個數組,請倒序輸出個數

題目描述: 給定一個數組, int[] abc = { 20, 90, 48, 92}; 請倒序輸出每一個數。 即,輸出 92 48 90 20 c #include<stdio.h> int main() {     int a[4]={20,90,48

(指標)輸入10個整數, 把最小的與第一個數交換, 最大的與最後個數交換

#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #in

C++ ,輸入5個數,讓最大值和第一 個數交換,讓最小值和最後個數交換

#include "iostream" using namespace std; int main() { const int n=6; //靈活定義陣列的大小 int