Pilih pernyataan yang muncul dalam pernyataan lain dipanggil subkueri atau pertanyaan dalaman dipanggil pertanyaan utama atau pertanyaan luar
-- 子查询 -- 查询的条件来自于另一查询的结果 SELECT * FROM t_user WHERE number=(SELECT number FROM t_user WHERE NAME='张三')
Sudah tentu, subkueri juga mempunyai jenis, yang dibahagikan kepada Jenis berikut. :
subkueri skalar (set hasil hanya mempunyai satu baris dan satu lajur)
subkueri lajur (set hasil hanya mempunyai satu lajur dan berbilang baris)
Subkueri baris (set hasil mempunyai satu baris dan berbilang lajur) (kurang)
Subkueri jadual (set keputusan biasanya mempunyai berbilang baris dan berbilang lajur)
Di sini kita mengambil jadual t_user baharu sebagai contoh
Perlu diambil perhatian bahawa: klasifikasi di sini adalah berdasarkan hasil subkueri terbenam Contohnya, pernyataan sql di atas ialah subkueri skalar
Hasil subkueri hanya mempunyai satu baris dan satu lajur
Kemudian kita berdasarkan kedudukan subkueri dalam pernyataan sql Mari kita bincangkan:
Selepas pilih: hanya menyokong subkueri skalar
-- select语句后面,将t1查询出的结果作为子查询的条件 SELECT t1.number, (SELECT NAME FROM t_user t2 WHERE t1.name = t2.name) FROM t_user t1
Hasil pertanyaan:
< . >Apa yang perlu diperhatikan di sini ialah kemas kini dan padam
KEMASKINI t_user SET NAME='abc' WHERE number=(SELECT number FROM t_user WHERE weight=110)
DELETE FROM t_user WHERE id=(SELECT id FROM t_user WHERE id=7)
MySQL tidak membenarkan kami melaksanakan dua sql di atas dengan cara ini:Mekanisme asas mysql menghalang kami daripada mengendalikan jadual ini
yang mengubah struktur jadual ini bermakna subkueri tidak boleh menanyakan jadual yang sedang dikendalikan
di mana diikuti dengan: boleh. diikuti dengan subkueri skalar, subkueri lajur, subkueri baris
-- insert into 后跟子查询 INSERT INTO t_user(number,NAME,age,birthday,weight,sex,opertime) SELECT number,NAME,age,birthday,weight,sex,NOW() FROM t_user WHERE id=3
Hasil pertanyaan perkataan jadual ialah berbilang baris dan berbilang lajur, iaitu,. meja
-- where后跟标量子查询 -- 查询体重最大的人信息 SELECT * FROM t_user WHERE weight=(SELECT MAX(weight) FROM t_user) -- where后跟列子查询 -- 查询体重大于或等于130的人信息 SELECT * FROM t_user WHERE weight IN (SELECT weight FROM t_user WHERE weight>=130) -- where后跟行子查询 -- 查询年龄最大,体重最大的人的信息 SELECT * FROM t_user WHERE (age,weight) = (SELECT MAX(age),MAX(weight) FROM t_user)
Keputusan:
Atas ialah kandungan terperinci Bagaimana untuk menggunakan subquery mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!