cari

Rumah  >  Soal Jawab  >  teks badan

Selesaikan ralat bahawa hasil mysql mengandungi berbilang baris

Apabila saya melaksanakan pertanyaan ini, saya mendapat mesej ralat ini "Kod ralat: 1172. Hasilnya mengandungi berbilang baris"

CREATE DEFINER=`root`@`localhost` PROCEDURE `un_follow`(
  user_been_following_id int,
  user_following_id int
)
BEGIN
    declare id int;
    select following_id into id from user_following
        where user_been_following_id = user_been_following_id
        and  user_following_id =  user_following_id; 
        
    delete from user_following 
    where following_id = id;
END
Adakah membantu

id ialah kunci utama jadual di bawah?

P粉068174996P粉068174996269 hari yang lalu467

membalas semua(1)saya akan balas

  • P粉322319601

    P粉3223196012024-04-05 13:11:10

    Pembolehubah setempat anda mempunyai nama yang sama dengan lajur jadual. Dengan cara ini anda tidak pernah membandingkan pembolehubah tempatan dengan lajur, tetapi sentiasa dengan pembolehubah tempatan itu sendiri.

    Pertanyaan anda perlu kembali tepat satu baris untuk memberikan pembolehubah id

    select following_id into id from user_following
        where user_been_following_id = user_been_following_id
        and  user_following_id =  user_following_id;

    user_been_following_id dan user_following_id ditafsirkan sebagai pembolehubah setempat dalam semua keadaan dan oleh itu diterjemahkan seperti berikut

    select following_id into id from user_following
        where 1 = 1
        and  1 = 1;

    Semua baris tempat pengguna_pengikut dikembalikan. Untuk membetulkannya, namakan semula pembolehubah setempat anda seperti

    CREATE DEFINER=`root`@`localhost` PROCEDURE `un_follow`(
      local_user_been_following_id int,
      local_user_following_id int
    )
    BEGIN
        declare id int;
        select following_id into id from user_following
            where user_been_following_id = local_user_been_following_id
            and  user_following_id =  local_user_following_id; 
        
        delete from user_following 
        where following_id = id;
    END

    (dengan mengandaikan tiada lajur bernama local_user_been_following_id atau local_user_following_id pada jadual user_following)

    Lihat juga di sini: https://dev.mysql.com/doc/ refman/8.0/ms/local-variable-scope.html

    balas
    0
  • Batalbalas