Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memasukkan Berbilang Baris ke dalam Jadual Pelayan SQL daripada Subkueri Bukan Skalar?

Bagaimana untuk Memasukkan Berbilang Baris ke dalam Jadual Pelayan SQL daripada Subkueri Bukan Skalar?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-05 14:11:40732semak imbas

How to Insert Multiple Rows into a SQL Server Table from a Non-Scalar Subquery?

Memasukkan Nilai ke dalam Jadual daripada Subkueri Bukan Skalar

Dalam SQL Server, memasukkan nilai ke dalam jadual berdasarkan subkueri yang mengembalikan berbilang keputusan boleh mencabar. Pertimbangkan senario berikut:

Anda mempunyai dua jadual:

  • artikel
  • harga

Anda mahu memasukkan baris ke dalam Jadual harga dengan nilai khusus untuk lajur kumpulan, id dan harga, di mana nilai id berada diperoleh daripada subkueri yang memilih ID yang sepadan daripada artikel jadual.

Pendekatan Salah:

Cuba menggunakan subkueri dengan lebih daripada satu hasil sebagai nilai untuk lajur dalam pernyataan INSERT boleh mengakibatkan ralat, kerana ditunjukkan oleh pernyataan SQL yang salah berikut:

INSERT INTO prices (group, id, price) 
VALUES (7, (select articleId from article WHERE name LIKE 'ABC%'), 1.50);

Betul Penyelesaian:

Untuk menyelesaikan isu ini, gunakan pernyataan SELECT untuk mendapatkan semula nilai yang dikehendaki dan masukkannya ke dalam jadual sasaran. Tetapkan nilai tetap untuk lajur kumpulan dan price terus dalam pernyataan SELECT:

insert into prices (group, id, price)
select 
    7, articleId, 1.50
from article where name like 'ABC%';

Dalam pernyataan ini, subquery kembali ID artikel yang sepadan dengan kriteria nama yang ditentukan, dan nilai pemalar 7 dan 1.50 secara eksplisit diberikan kepada Lajur kumpulan dan harga.

Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Berbilang Baris ke dalam Jadual Pelayan SQL daripada Subkueri Bukan Skalar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn