Chuyển đến nội dung chính

Truy vấn con – Subquery

Subquery đơn giản chỉ là 1 câu lệnh SELECT nằm trong 1 câu lệnh SELECT khác, với mục đích trả về kết quả cho câu SELECT bên ngoài sử dụng. Subquery có thể nằm ở mệnh đề SELECT, FROM (gọi là inline view), WHERE hay HAVING.
Khi sử dụng subquery, ta nên để subquery trong dấu ngoặc đơn và viết ở phía bên phải toán tử.
Do kết quả được câu SELECT bên ngoài sử dụng, subquery cần trả về lượng dữ liệu chính xác, phù hợp với toán tử sử dụng:
  • Với các toán tử so sánh như =   >   <   >=   <=   <>  subquery cần trả về 1 giá trị duy nhất, gọi là single-row subquery
  • Với các toán tử như IN, ANY, ALL, EXISTS, subquery có thể trả về nhiều giá trị, gọi là multiple-row subquery
  • Sử dụng multiple-row subquery


    Toán tử IN: bằng 1 trong những giá trị trong danh sách
  • VD: tìm những người có lương bằng với lương thấp nhất của phòng ban 50 hoặc 80


    Note
    Cẩn thận với NOT IN khi câu subquery có giá trị null. So sánh với null sẽ luôn trả về null 

    VD: ta đếm xem có bao nhiêu người làm lính



     Toán tử ANY
    • > ANY: chỉ cần lớn hơn giá trị nhỏ nhất trong danh sách
    • < ANY: chỉ cần nhỏ hơn giá trị lớn nhất trong danh sách
    • = ANY: tương đương với IN
    VD:


     Toán tử ALL
    • > ALL: phải lớn hơn tất cả các giá trị trong danh sách
    • < ALL: phải nhỏ hơn tất cả các giá trị trong danh sách
    VD:


    Toán tử EXISTS
    Trả về true khi câu subquery trả về ít nhất 1 dòng.

    VD: ta tìm những người đã từng thay đổi công việc


    Một số quy tắc khi sử dụng truy vấn con

    • Câu truy vấn con phải nằm trong cặp ngoặc đơn.
    • Đặt truy vấn con bên phải điều kiện so sánh.
    • Mệnh đề ORDER BY trong truy vấn con là không cần thiết ngoại trừ khi có sử dụng mệnh đề TOP.
    • Sử dụng các toán tử một dòng với các truy vấn con trả về một dòng và sử dụng các toán tử nhiều dòng với các truy vấn con trả về nhiều dòng.

    Các dạng truy vấn con

    • Truy vấn con một dòng
    • Truy vấn con nhiều dòng

    Truy vấn con một dòng

    • Trả về duy nhất 1 dòng
    • Sử dụng các toán tử so sánh một dòng
      • = Bằng
      • > Lớn hơn
      • >= Lớn hơn hoặc bằng
      • < Nhỏ hơn
      • <= Nhỏ hơn học bằng
      • <> Không bằng
  • Truy vấn con nhiều dòng

    • Trả về nhiều dòng
    • Sử dụng các toán tử so sánh nhiều dòng
      • IN Bằng một trong các giá trị
      • ANY Chỉ cần thỏa một trong các giá trị trả về bởi truy vấn con
      • ALL Phải thỏa tất cả các giá trị trả về bởi truy vấn con

Nhận xét

Bài đăng phổ biến từ blog này

Entry Test của FPT

IQ - Kiểm tra tư duy logic (8/20) - GMAT- Kiểm tra khả năng tính toán trong thời gian ngắn (8/20) - Tiếng Anh (18-> 25/50) - Các bài thi chuyên môn - FE (8/20) IQ: lên mạng tìm "IQ test" là ra đầy. + GMAT: Những câu trắc nghiệm tính toán đơn giản kiểu như sau:  1 . Một shop thời trang sale off quần jeans 15 %, quần jeans giá 450 $, người mua đưa 500 $, hỏi cashier trả lại bao nhiêu $ tiền thừa.? 2 . 100 % là 180 , vậy 150 là bao nhiêu %? Tiếng anh: Cỡ như thi TOEIC thôi. Chuyên môn: Mobile thì trắc nghiệm Java. Qúa trình tuyển như sau :v Lần 1: Test IQ, Tiếng Anh( mình làm í ẹ khoảng 50% mà vẫn được) , Java Lân 2: được gọi điện lên :)) + Gioi thiệu bản thân + Họ chỉ hỏi các câu căn bản như: -. OOP: là gì, 4 tính chất, ví dụ, khác nhau giữa interface và abstract - CODE: hầu toàn các bài toán vòng for :)) , cẩn thận mấy câu kế thừa. SQL (distinct, view, function, cursor, store procedure, ...v.v.), nhớ có câu cộng 2 số int không dùng biến đệm hơi khoai haha + Nói ch...

Java: Java Package-Thư viện trong Java

Giới thiệu về Package Các bạn mới học lập trình Java thường không dể ý tới package vì các bạn toàn tạo file .java vào cùng 1 chỗ, không cần sắp xếp, không cần quản lý truy nhập. Nhưng để tăng kỹ năng lập trình với Java, các bạn cần phải tìm hiểu về package trong Java. Các bạn có thể tham khảo định nghĩa sau: Package được dùng để đóng gói các lớp trong chương trình lại với nhau thành một khối. Đây là cách tốt nhất để lưu trữ các lớp gần giống nhau hoặc có cùng một module thành một khối thống nhất – để đáp ứng 1 khối chức năng. Từ đây mình sẽ giới thiệu thêm với các bạn các câu lệnh nhâp khẩu,nó có định dạng như sau : Định dạng :  import javaPackageNameImport;    Nó giống như khai báo thư viện ở các ngôn ngữ lập trình khác.Như vậy,chỉ khi các bạn nhập khẩu chúng,các bạn mới có thể sử dụng thư viện mà chúng cung cấp cho ta. VD :    import java.util.Date;   import java.text.SimpleDateFormat; Lưu ý : -Các câu lệnh nhập khẩu rất nhiều và...

phỏng vấn Embedded C và C++?

Có vài điểm rất nhỏ, các bạn không để ý có thể dẫn đến bất lợi (nếu không muốn nói là rớt) ở vòng hồ sơ hoặc khi đi phỏng vấn. Mình liệt kê rất cụ thể ra những chuyện mình đã thấy qua nhiều lần (người thật, việc thật), hy vọng cho các bạn thêm kinh nghiệm. Lưu ý: Những chuyện này rất chủ quan, có thể chỉ đúng trong môi trường của mình và hoàn toàn không đúng trong môi trường khác. Gửi email CV đến không có Cover Letter, chỉ đính kèm mỗi file PDF là cái CV. CV ghi : tiếng Anh: Trung Bình, C: Trung Bình,... nhưng bên dưới lại ghi ưu điểm_:  là người ham học hỏi... CV bằng tiếng Việt và lại viết sai chính tả tiếng Việt. CV ghi quá nhiều về các hoạt động tình nguyện, hiến máu, blah blah... nhưng phần kĩ thuật lại có 3 dòng thôi. Mặc đồ thể dục của trường và đi dép lê đến PV. Đến muộn PV (em ấy bảo bị kẹt xe). Đưa yêu cầu, em ấy không hiểu đề nhưng ngại không dám hỏi lại, dẫn đến viết hoàn toàn sai. Hỏi ngay câu căn bản đầu tiên em ấy đã nói không biết và  đổ do trường kh...