SEMUA (T-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Membandingkan nilai skalar dengan sekumpulan nilai kolom tunggal.
Sintaks
scalar_expression { = | <> | != | > | >= | !> | < | <= | !< } ALL ( subquery )
Argumen
scalar_expression
Adalah ekspresi yang valid.
{ = | <> | != | > | >= | !> | < | <= | !< }
Adalah operator perbandingan.
kueri bertumpuk
Adalah subkueri yang mengembalikan kumpulan hasil dari satu kolom. Jenis data kolom yang dikembalikan harus tipe data yang sama dengan jenis data scalar_expression.
Adalah pernyataan SELECT terbatas, di mana klausa ORDER BY dan kata kunci INTO tidak diizinkan.
Jenis hasil
Boolean
Nilai hasil
Mengembalikan TRUE ketika perbandingan yang ditentukan adalah TRUE untuk semua pasangan (scalar_expression, x), ketika x adalah nilai dalam kumpulan kolom tunggal. Jika tidak, mengembalikan FALSE.
Keterangan
ALL mengharuskan scalar_expression membandingkan secara positif dengan setiap nilai yang dikembalikan oleh subkueri. Misalnya, jika subkueri mengembalikan nilai 2 dan 3, scalar_expression<= ALL (subkueri) akan dievaluasi sebagai TRUE untuk scalar_expression 2. Jika subkueri mengembalikan nilai 2 dan 3, scalar_expression = ALL (subkueri) akan dievaluasi sebagai FALSE, karena beberapa nilai subkueri (nilai 3) tidak akan memenuhi kriteria ekspresi.
Untuk pernyataan yang mengharuskan scalar_expression membandingkan secara positif hanya dengan satu nilai yang dikembalikan oleh subkueri, lihat BEBERAPA | ANY (Transact-SQL).
Untuk membandingkan kesetaraan dua ekspresi dan menjamin hasil yang benar atau salah, lihat IS [NOT] DISTINCT FROM (Transact-SQL).
Artikel ini mengacu pada ALL saat digunakan dengan subkueri. SEMUA juga dapat digunakan dengan UNION dan SELECT.
Contoh
Contoh berikut membuat prosedur tersimpan yang menentukan apakah semua komponen yang ditentukan SalesOrderID
dalam database AdventureWorks2022 dapat diproduksi dalam jumlah hari yang ditentukan. Contoh menggunakan subkueri untuk membuat daftar jumlah DaysToManufacture
nilai untuk semua komponen tertentu SalesOrderID
, lalu mengonfirmasi bahwa semua DaysToManufacture
berada dalam jumlah hari yang ditentukan.
-- Uses AdventureWorks
CREATE PROCEDURE DaysToBuild @OrderID INT, @NumberOfDays INT
AS
IF
@NumberOfDays >= ALL
(
SELECT DaysToManufacture
FROM Sales.SalesOrderDetail
JOIN Production.Product
ON Sales.SalesOrderDetail.ProductID = Production.Product.ProductID
WHERE SalesOrderID = @OrderID
)
PRINT 'All items for this order can be manufactured in specified number of days or less.'
ELSE
PRINT 'Some items for this order can''t be manufactured in specified number of days or less.' ;
Untuk menguji prosedur, jalankan prosedur dengan menggunakan SalesOrderID 49080
, yang memiliki satu komponen yang membutuhkan 2
hari dan dua komponen yang membutuhkan 0 hari. Pernyataan pertama di bawah ini memenuhi kriteria. Kueri kedua tidak.
EXECUTE DaysToBuild 49080, 2 ;
Berikut set hasilnya.
All items for this order can be manufactured in specified number of days or less.
EXECUTE DaysToBuild 49080, 1 ;
Berikut set hasilnya.
Some items for this order can't be manufactured in specified number of days or less.