Chúng ta có thể sử dụng truy vấn con trong mệnh đề TỪ không?

Xin chào Kris, tôi hy vọng bạn sẽ có thể hỗ trợ. Tôi đã xem bài viết của bạn với hy vọng nó sẽ giải quyết vấn đề truy vấn của tôi. Tôi có truy vấn theo đó tôi thích các kết quả được định dạng cụ thể. Tôi đã hy vọng một truy vấn con sẽ giúp

Vì vậy, hiện tại tôi hiểu, có thể hiểu được vì tôi đang sử dụng phép nối để trả về kết quả

Cổ phiếu # Cổ phiếu Số lượng Cổ phiếu Số lượng Cổ phiếu Giá trị Cổ phiếu
Mặt hàng 1 20 10 20. 00 400. 00
Mục1 20 10 20. 00 400. 00

Tuy nhiên, những gì tôi đang cố gắng đạt được là một đầu ra được định dạng như sau

Cổ phiếu # Cổ phiếu Số lượng Cổ phiếu Số lượng Cổ phiếu Giá trị Cổ phiếu
Mặt hàng 1 20 10 20. 00 400. 00
Mục1 10 20. 00

Tôi nghĩ rằng tôi có thể chạy truy vấn phụ để trả về StockTotQty cho mỗi mã hàng cũng như StockValue nhưng theo tôi hiểu thì truy vấn phụ trong câu lệnh Chọn chỉ có thể trả về một giá trị duy nhất và StockTotQty của tôi là các giá trị khác nhau. Điều tương tự cũng xảy ra với Giá trị cổ phiếu

Bạn có thể sử dụng truy vấn con trong câu lệnh CHỌN, CHÈN, XÓA hoặc CẬP NHẬT để thực hiện các tác vụ sau

  • So sánh một biểu thức với kết quả của truy vấn
  • Xác định xem một biểu thức có được bao gồm trong kết quả của truy vấn không
  • Kiểm tra xem truy vấn có chọn bất kỳ hàng nào không

cú pháp


  • Truy vấn con [truy vấn bên trong] thực thi một lần trước khi truy vấn chính [truy vấn bên ngoài] thực hiện
  • Truy vấn chính [truy vấn bên ngoài] sử dụng kết quả truy vấn phụ

Ví dụ truy vấn con SQL

Trong phần này, bạn sẽ tìm hiểu các yêu cầu của việc sử dụng truy vấn con. Chúng tôi có hai bảng 'student' và 'marks' sau đây với trường chung 'StudentID'


         

                                                                  Điểm của học sinh

Bây giờ chúng ta muốn viết một truy vấn để xác định tất cả các sinh viên đạt điểm cao hơn điểm của sinh viên có ID sinh viên là 'V002', nhưng chúng ta không biết điểm của 'V002'.
- Để giải quyết vấn đề, chúng tôi yêu cầu hai truy vấn. Một truy vấn trả về điểm [được lưu trữ trong trường Total_marks] của 'V002' và truy vấn thứ hai xác định những học sinh đạt điểm cao hơn kết quả của truy vấn đầu tiên.

truy vấn đầu tiên

SELECT *  
FROM `marks`  
WHERE studentid = 'V002';

kết quả truy vấn


Kết quả của truy vấn là 80.
- Sử dụng kết quả của truy vấn này, ở đây chúng tôi đã viết một truy vấn khác để xác định những sinh viên đạt điểm cao hơn 80. Đây là truy vấn.

Truy vấn thứ hai

SELECT a.studentid, a.name, b.total_marks
FROM student a, marks b
WHERE a.studentid = b.studentid
AND b.total_marks >80;

Biểu thức đại số quan hệ


Cây đại số quan hệ


kết quả truy vấn


Hai truy vấn trên đã xác định những sinh viên nhận được số tốt hơn sinh viên có ID sinh viên là 'V002' [Abhay]

Bạn có thể kết hợp hai truy vấn trên bằng cách đặt một truy vấn bên trong truy vấn kia. Truy vấn con [còn được gọi là 'truy vấn bên trong'] là truy vấn bên trong dấu ngoặc đơn. Xem đoạn mã sau và kết quả truy vấn

Mã SQL

SELECT a.studentid, a.name, b.total_marks
FROM student a, marks b
WHERE a.studentid = b.studentid AND b.total_marks >
[SELECT total_marks
FROM marks
WHERE studentid =  'V002'];

kết quả truy vấn


Trình bày bằng hình ảnh của Truy vấn con SQL

truy vấn con. Quy tắc chung

Câu lệnh SELECT của truy vấn con gần giống với câu lệnh SELECT và nó được dùng để bắt đầu một truy vấn thông thường hoặc truy vấn bên ngoài. Đây là cú pháp của một truy vấn con

cú pháp

[SELECT [DISTINCT] subquery_select_argument
FROM {table_name | view_name}
{table_name | view_name} ...
[WHERE search_conditions]
[GROUP BY aggregate_expression [, aggregate_expression] ...]
[HAVING search_conditions]]

truy vấn con. hướng dẫn

Có một số nguyên tắc cần xem xét khi sử dụng truy vấn con

  • Một truy vấn con phải được đặt trong dấu ngoặc đơn.  
  • Một truy vấn con phải được đặt ở phía bên phải của toán tử so sánh.  
  • Truy vấn con không thể thao túng kết quả của chúng bên trong, do đó mệnh đề ORDER BY không thể được thêm vào truy vấn con. Bạn có thể sử dụng mệnh đề ORDER BY trong câu lệnh SELECT chính [truy vấn bên ngoài], đây sẽ là mệnh đề cuối cùng
  • Sử dụng toán tử một hàng với truy vấn con một hàng.  
  • Nếu truy vấn con [truy vấn bên trong] trả về giá trị null cho truy vấn bên ngoài, thì truy vấn bên ngoài sẽ không trả về bất kỳ hàng nào khi sử dụng các toán tử so sánh nhất định trong mệnh đề WHERE

Loại truy vấn phụ

  • Truy vấn con một hàng. Trả về số không hoặc một hàng
  • Truy vấn con nhiều hàng. Trả về một hoặc nhiều hàng
  • Truy vấn con nhiều cột. Trả về một hoặc nhiều cột
  • truy vấn con tương quan. Tham chiếu một hoặc nhiều cột trong câu lệnh SQL bên ngoài. Truy vấn con được gọi là truy vấn con tương quan vì truy vấn con có liên quan đến câu lệnh SQL bên ngoài
  • Truy vấn con lồng nhau. Truy vấn con được đặt trong một truy vấn con khác

Trong phần tiếp theo, chúng tôi đã thảo luận kỹ lưỡng về các chủ đề trên. Ngoài loại truy vấn con ở trên, bạn có thể sử dụng truy vấn con bên trong câu lệnh INSERT, UPDATE và DELETE. Đây là một cuộc thảo luận ngắn gọn

Truy vấn con với câu lệnh INSERT

Câu lệnh INSERT có thể được sử dụng với truy vấn con. Dưới đây là cú pháp và ví dụ về truy vấn con sử dụng câu lệnh INSERT

cú pháp

INSERT INTO table_name [ [column1 [, column2 ]] ]
SELECT [ *|column1 [, column2 ]
FROM table1 [, table2 ]
[ WHERE VALUE OPERATOR ];

Nếu chúng tôi muốn chèn các đơn đặt hàng đó từ bảng 'đơn đặt hàng' có số lượng tạm ứng 2000 hoặc 5000 vào bảng 'đơn đặt hàng mới' thì có thể sử dụng SQL sau

bảng mẫu. mệnh lệnh


Mã SQL

INSERT INTO neworder
SELECT * FROM  orders
WHERE advance_amount in[2000,5000];

đầu ra


Để xem thêm chi tiết về các truy vấn con sử dụng câu lệnh INSERT, hãy nhấp vào đây

Truy vấn con với câu lệnh CẬP NHẬT

Trong câu lệnh CẬP NHẬT, bạn có thể đặt giá trị cột mới bằng với kết quả được trả về bởi truy vấn con một hàng. Dưới đây là cú pháp và ví dụ về truy vấn con sử dụng câu lệnh CẬP NHẬT

cú pháp

UPDATE table  SET column_name = new_value
[ WHERE OPERATOR [ VALUE ]
[SELECT COLUMN_NAME
FROM TABLE_NAME]     
[ WHERE] ]

Nếu chúng tôi muốn cập nhật ord_date đó trong bảng 'neworder' với ' 15-JAN-10 ' có chênh lệch giữa ord_amount và .

bảng mẫu. đơn hàng mới


Mã SQL

UPDATE neworder
SET ord_date='15-JAN-10'
WHERE ord_amount-advance_amount<
[SELECT MIN[ord_amount] FROM orders];

đầu ra


Để xem thêm chi tiết về các truy vấn con sử dụng câu lệnh CẬP NHẬT, hãy nhấp vào đây

Truy vấn con với câu lệnh DELETE

Câu lệnh DELETE có thể được sử dụng với truy vấn con. Dưới đây là cú pháp và ví dụ về truy vấn con sử dụng câu lệnh DELETE

cú pháp

________số 8

Nếu chúng tôi muốn xóa các đơn đặt hàng đó khỏi bảng 'neworder' có số lượng tạm ứng nhỏ hơn số lượng tạm ứng tối đa của bảng 'đơn đặt hàng', thì có thể sử dụng câu lệnh SQL sau

bảng mẫu. đơn hàng mới


Mã SQL

DELETE FROM neworder
WHERE advance_amount<
[SELECT MAX[advance_amount] FROM orders];

đầu ra


Để xem thêm chi tiết về truy vấn con sử dụng câu lệnh DELETE bấm vào đây

Tiếp theo là gì?

  • Truy vấn con SQL - Bản trình bày Slide
  • Truy vấn một hàng con
  • Truy vấn con nhiều hàng và cột
  • Truy vấn con tương quan sử dụng bí danh
  • Truy vấn con lồng nhau

Ghi chú. Đầu ra của câu lệnh SQL đã nói ở đây được lấy bằng cách sử dụng Cơ sở dữ liệu Oracle 10g Express Edition

Mệnh đề nào Không thể được sử dụng trong truy vấn con?

Không được bao gồm mệnh đề MÁY TÍNH hoặc CHO DUYỆT và chỉ có thể bao gồm mệnh đề ORDER BY khi mệnh đề TOP cũng được chỉ định. Một truy vấn con có thể được lồng bên trong mệnh đề WHERE hoặc HAVING của câu lệnh SELECT , INSERT , UPDATE hoặc DELETE bên ngoài hoặc bên trong một truy vấn con khác.

Truy vấn con vô hướng có thể xảy ra trong mệnh đề TỪ không?

Có thể sử dụng truy vấn con vô hướng ở bất kỳ đâu trong truy vấn SQL mà cột hoặc biểu thức có thể được sử dụng . TỪ emp, [CHỌN dept_name TỪ dept WHERE dept = 'finance'] dept1; .

Chúng ta có thể sử dụng truy vấn con trong mệnh đề GROUP BY không?

Bạn đã tra cứu "NHÓM THEO" trong hướng dẫn Ngôn ngữ SQL chưa? . Bạn không thể chỉ định các cột LOB, các bảng lồng nhau hoặc các mảng như một phần của expr. Các biểu thức có thể ở bất kỳ dạng nào ngoại trừ các biểu thức truy vấn con vô hướng

Chủ Đề