SQL ANY மற்றும் ALL Operators என்றால் என்ன?
ANY மற்றும் ALL operators ஒரு ஒற்றை நெடுவரிசை மதிப்புக்கும் மற்ற மதிப்புகளின் வரம்புக்கும் இடையே ஒப்பீடு செய்ய உங்களை அனுமதிக்கின்றன.
SQL ANY Operator
ANY operator:
- முடிவாக ஒரு boolean மதிப்பை தரும்
- Subquery மதிப்புகளில் ஏதேனும் ஒன்று நிபந்தனையை பூர்த்தி செய்தால் TRUE-ஐ தரும்
ANY என்பது வரம்பில் உள்ள மதிப்புகளில் ஏதேனும் ஒன்றுக்கு செயல்பாடு true ஆக இருந்தால் நிபந்தனை true ஆக இருக்கும் என்பதாகும்.
ANY தொடரியல்
SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
(SELECT column_name
FROM table_name
WHERE condition);
குறிப்பு:
Operator ஒரு நிலையான ஒப்பீடு operator ஆக இருக்க வேண்டும் (=, <>, !=, >, >=, <, or <=).
SQL ALL Operator
ALL operator:
- முடிவாக ஒரு boolean மதிப்பை தரும்
- Subquery மதிப்புகள் அனைத்தும் நிபந்தனையை பூர்த்தி செய்தால் TRUE-ஐ தரும்
- SELECT, WHERE மற்றும் HAVING statements-உடன் பயன்படுத்தப்படுகிறது
ALL என்பது வரம்பில் உள்ள மதிப்புகள் அனைத்திற்கும் செயல்பாடு true ஆக இருந்தால் மட்டுமே நிபந்தனை true ஆக இருக்கும் என்பதாகும்.
SELECT உடன் ALL தொடரியல்
SELECT ALL column_name(s)
FROM table_name
WHERE condition;
WHERE அல்லது HAVING உடன் ALL தொடரியல்
SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_name
FROM table_name
WHERE condition);
குறிப்பு:
Operator ஒரு நிலையான ஒப்பீடு operator ஆக இருக்க வேண்டும் (=, <>, !=, >, >=, <, or <=).
ஆர்ப்பாட்ட தரவுத்தளம்
Northwind மாதிரி தரவுத்தளத்தில் "Products" அட்டவணையில் இருந்து ஒரு தேர்வு கீழே உள்ளது:
Products அட்டவணை
+-----------+------------------------------+------------+------------+-----------------------+-------+
| ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
+-----------+------------------------------+------------+------------+-----------------------+-------+
| 1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18 |
| 2 | Chang | 1 | 1 | 24 - 12 oz bottles | 19 |
| 3 | Aniseed Syrup | 1 | 2 | 12 - 550 ml bottles | 10 |
| 4 | Chef Anton's Cajun Seasoning | 2 | 2 | 48 - 6 oz jars | 22 |
| 5 | Chef Anton's Gumbo Mix | 2 | 2 | 36 boxes | 21.35 |
| 6 | Grandma's Boysenberry Spread | 3 | 2 | 12 - 8 oz jars | 25 |
| 7 | Uncle Bob's Organic Dried... | 3 | 7 | 12 - 1 lb pkgs. | 30 |
| 8 | Northwoods Cranberry Sauce | 3 | 2 | 12 - 12 oz jars | 40 |
| 9 | Mishi Kobe Niku | 4 | 6 | 18 - 500 g pkgs. | 97 |
+-----------+------------------------------+------------+------------+-----------------------+-------+
மற்றும் "OrderDetails" அட்டவணையில் இருந்து ஒரு தேர்வு:
OrderDetails அட்டவணை
+---------------+---------+-----------+----------+
| OrderDetailID | OrderID | ProductID | Quantity |
+---------------+---------+-----------+----------+
| 1 | 10248 | 11 | 12 |
| 2 | 10248 | 42 | 10 |
| 3 | 10248 | 72 | 5 |
| 4 | 10249 | 14 | 9 |
| 5 | 10249 | 51 | 40 |
| 6 | 10250 | 41 | 10 |
| 7 | 10250 | 51 | 35 |
| 8 | 10250 | 65 | 15 |
| 9 | 10251 | 22 | 6 |
| 10 | 10251 | 57 | 15 |
+---------------+---------+-----------+----------+
SQL ANY உதாரணங்கள்
பின்வரும் SQL statement ProductName-ஐ பட்டியலிடுகிறது, OrderDetails அட்டவணையில் Quantity 10-க்கு சமமான ஏதேனும் பதிவுகள் இருந்தால் (Quantity நெடுவரிசையில் 10 மதிப்புகள் இருப்பதால் இது TRUE-ஐ தரும்):
உதாரணம்
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);
பின்வரும் SQL statement ProductName-ஐ பட்டியலிடுகிறது, OrderDetails அட்டவணையில் Quantity 99-ஐ விட பெரிய ஏதேனும் பதிவுகள் இருந்தால் (Quantity நெடுவரிசையில் 99-ஐ விட பெரிய சில மதிப்புகள் இருப்பதால் இது TRUE-ஐ தரும்):
உதாரணம்
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 99);
பின்வரும் SQL statement ProductName-ஐ பட்டியலிடுகிறது, OrderDetails அட்டவணையில் Quantity 1000-ஐ விட பெரிய ஏதேனும் பதிவுகள் இருந்தால் (Quantity நெடுவரிசையில் 1000-ஐ விட பெரிய மதிப்புகள் இல்லாததால் இது FALSE-ஐ தரும்):
உதாரணம்
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 1000);
SQL ALL உதாரணங்கள்
பின்வரும் SQL statement அனைத்து தயாரிப்பு பெயர்களையும் பட்டியலிடுகிறது:
உதாரணம்
SELECT ALL ProductName
FROM Products
WHERE TRUE;
பின்வரும் SQL statement ProductName-ஐ பட்டியலிடுகிறது, OrderDetails அட்டவணையில் உள்ள அனைத்து பதிவுகளும் Quantity 10-க்கு சமமாக இருந்தால். Quantity நெடுவரிசையில் பல வெவ்வேறு மதிப்புகள் இருப்பதால் (10 மதிப்பு மட்டும் இல்லை) இது FALSE-ஐ தரும்:
உதாரணம்
SELECT ProductName
FROM Products
WHERE ProductID = ALL
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);
ANY vs ALL காட்சிப் பிரதிநிதித்துவம்
ANY Operator
நிபந்தனை: Quantity = 10 உள்ள ஏதேனும் தயாரிப்புகள்
ALL Operator
நிபந்தனை: Quantity = 10 உள்ள அனைத்து தயாரிப்புகள்
கவனிக்க: ANY ஏதேனும் ஒரு பொருந்தும் பதிவு இருந்தால் TRUE-ஐ தரும், ALL அனைத்து பதிவுகளும் பொருந்தும் போது மட்டுமே TRUE-ஐ தரும்.
நடைமுறை பயன்பாட்டு நிகழ்வுகள்
சராசரி மதிப்புகளை விட அதிகம்
சராசரி விலையை விட அதிக விலை கொண்ட ஏதேனும் தயாரிப்புகள்
SELECT ProductName
FROM Products
WHERE Price > ANY (
SELECT AVG(Price)
FROM Products
GROUP BY CategoryID
);
அனைத்து நிபந்தனைகளும்
அனைத்து வாடிக்கையாளர்களும் ஆர்டர் இட்ட தயாரிப்புகள்
SELECT ProductName
FROM Products
WHERE ProductID = ALL (
SELECT DISTINCT ProductID
FROM Orders
WHERE CustomerID IN (
SELECT CustomerID FROM Customers
)
);
குறைந்தபட்ச மதிப்பு வடிகட்டுதல்
குறைந்தபட்ச விலையை விட குறைவான ஏதேனும் தயாரிப்புகள்
SELECT ProductName
FROM Products
WHERE Price < ANY (
SELECT MIN(Price)
FROM Products
GROUP BY SupplierID
);
ANY vs IN ஒப்பீடு
ANY Operator
- Comparison operators-உடன் பயன்படுத்தலாம் (>, <, =, etc.)
- மதிப்புகளின் வரம்புடன் ஒப்பீடு செய்ய பயனுள்ளது
- சிக்கலான நிபந்தனைகளுக்கு ஏற்றது
- Subquery முடிவுகளுடன் வேலை செய்கிறது
WHERE Price > ANY (subquery)
IN Operator
- சமமான மதிப்புகளை சோதிக்க பயன்படுகிறது (=)
- நிலையான மதிப்புப் பட்டியல்களுக்கு ஏற்றது
- எளிமையான சமத்துவ சோதனைகளுக்கு ஏற்றது
- Static lists அல்லது subqueries-உடன் வேலை செய்கிறது
WHERE Price IN (10, 20, 30)
குறிப்பு:
= ANY என்பது IN-க்கு சமமானது, ஆனால் > ANY அல்லது < ANY போன்ற மற்ற comparison operators ANY-உடன் பயன்படுத்தப்படும் போது அதிக நெகிழ்வுத்தன்மையை வழங்குகிறது.