Rumah >pangkalan data >tutorial mysql >Bagaimana untuk menyelesaikan ralat mysql Subquery mengembalikan lebih daripada 1 baris

Bagaimana untuk menyelesaikan ralat mysql Subquery mengembalikan lebih daripada 1 baris

PHPz
PHPzke hadapan
2023-05-27 18:49:1310361semak imbas

    ralat mysql: Subquery mengembalikan lebih daripada 1 baris

    ralat mysql: SQLSTATE[21000]: Pelanggaran kardinaliti: 1242 Subquery mengembalikan lebih daripada 1 baris

    Ralat bermakna hasil subkueri adalah lebih daripada satu baris.

    Ralat dilaporkan seperti berikut

    Bagaimana untuk menyelesaikan ralat mysql Subquery mengembalikan lebih daripada 1 baris

    Penyelesaian

    Ambil pernyataan sql ini sebagai contoh

    select * from table1 where table1.colums=(select columns from table2);

    1) Jika ia ditulis Ulang, keluarkan data pendua. Semasa menulis data, anda boleh menggunakan pertimbangan logik (PHP) atau kunci asing (MySQL) untuk mengelakkan penulisan data berulang.

    (Apa yang saya temui dalam pembangunan sebenar ialah situasi penulisan data berulang. Saya mendapati dua keping data yang sama dalam pangkalan data, yang tidak memenuhi keperluan perniagaan asal)

    2) Tambah hadkan 1 kepada pernyataan bersyarat subquery dan cari satu yang memenuhi syarat

    select * from table1 where table1.colums=(select columns from table2 limit 1);

    3) Tambahkan sebarang kata kunci sebelum subquery

    select * from table1 where table1.colums=any(select columns from table2);

    Kod ralat: 1242 Subquery mengembalikan lebih daripada 1 baris

    Perihalan ralat

    1 pertanyaan dilaksanakan, 0 kejayaan, 1 ralat, 0 amaran

    Pertanyaan: SELECT t.id, DATE_FORMAT( t.statisTime, ' %Y-% m-%d %H:%i:%s' ) statusTime, (PILIH `id` DARI t_truck_info WHERE id = t.plateId...

    Kod ralat: 1242Subquery mengembalikan lebih daripada 1 baris

    Masa pelaksanaan: 0.009 saat Masa penghantaran: 0.002 saat Jumlah masa: 0.012 saat

    Sebab ralat

    Apabila menulis pernyataan SQL pertanyaan, terdapat medan A diperoleh daripada jadual lain

    select t.id,(select num from t_user_info where id = stuNo) as amount from t_stu_info t left join t_user_info t0
    on t0.id = t.stuNo

    Pertanyaan menunjukkan bahawa num ialah berbilang keping data dan hasil pertanyaan luar memerlukan num untuk menjadi satu keping data

    Penyelesaian

    select t.id,(select sum(num) from t_user_info where id = stuNo) as amount from t_stu_info t left join t_user_info t0
    on t0.id = t.stuNo

    Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat mysql Subquery mengembalikan lebih daripada 1 baris. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam