Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: IN và EXISTS trong SQL nghĩa là gì?

  1. #1
    Ngày gia nhập
    06 2007
    Bài viết
    206

    Mặc định IN và EXISTS trong SQL nghĩa là gì?

    Các bạn cho mình hỏi IN và EXIST khác nhau chỗ nào khi sử dụng với subquery, sao nhiều khi mình thấy nó đc sử dụng na ná nhau nên đâm ra khó hiểu quá.

    Mong các bạn hướng dẫn và cho ví dụ để trực quan hơn!

    ví dụ như 2 cấu truy vấn sau là giống hay khác nhau: Liệt kê những môn học chưa có kết quả.
    1. Select * from MonHoc where MaMH not in (Select MaMH From KetQua)
    2. Select * from MonHoc where MaMH not exists (Select MaMH From KetQua)
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 09-11-2008 lúc 02:34 PM. Lý do: Lời lẽ khiềm nhã.
    Thà để chửi dốt 1 lần, còn hơn ngu cả đời.

  2. #2
    Ngày gia nhập
    11 2007
    Bài viết
    294

    @nth4 : Ý kiến khiếu nại không để ở đây nhé ^^!
    Có chỗ riêng cho việc khiếu nại rồi. Bạn chịu khó post vô đó nghen.

    Còn về IN và EXIST thì cách sử dụng không hề khác nhau. Điểm khác biệt là về performance. Tuy nhiên nếu bạn làm với dữ liệu nhỏ thì bạn cũng không cần quá quan tâm tới IN và EXIST. Nếu bạn còn quan tâm tại sao có khác biệt về performance thì có thể xem ở đây:
    http://asktom.oracle.com/pls/asktom/...D:953229842074

    Điều khác biệt chỉ xảy ra với NOT IN và NOT EXIST. NOT IN không quan tâm đến các giá trị null còn NOT EXIST thì có. Bạn có thể xem thêm về NOT IN và NOT EXIST ở đây:
    http://asktom.oracle.com/pls/asktom/...D:442029737684

    @zkday: Cá nhân Dark thấy thì hình như là post sai box thật, tuy nhiên những trường hợp thế này có thể châm chước được. Chắc là đồng chí mod nào xóa bài hôm ấy(xin lỗi trước) cũng hơi khó ở nên khó tính ^^!

    Cheers!
    Is the moon rising...

  3. #3
    Ngày gia nhập
    06 2007
    Bài viết
    206

    gởi Darkan: cảm ơn bạn đã góp ý và đã trả lời, chứ ko như ai kia, vào đây chỉ để đính chính hay gì đó.

    Thật ra thì do máy mình ko có cài SQL nên ko tìm hiểu trong book online đc, nên mới lên đây hỏi.
    Vừa cài xong mở phần help ra xem cũng hiểu sơ sơ.

    Mình ko bàn cãi gì thêm, chỉ có đều là MOD có chuyển qua box khác hay ko, sao ko chuyển đi, rồi nó mình hỏi sai box rồi xóa bài.
    Thà để chửi dốt 1 lần, còn hơn ngu cả đời.

  4. #4
    Ngày gia nhập
    11 2007
    Bài viết
    294

    @nth4: Theo quan điểm của Dark thì bạn mod nào xóa bài của bạn không hề sai ^^!
    Mod nào xóa bài của bạn chỉ có thể là hơi cứng nhắc quá. Nội quy đã có, bạn làm sai thì người ta hoàn toàn có quyền xóa. Tuy nhiên, Dark cũng muốn nhắc lại là có thể trong chừng mực nào đó chúng ta có thể châm chước cho nhau, nhưng điều đó không phải là bắt buộc. Mod cũng giống như các bạn thôi, cũng có rất nhiều việc cần phải quan tâm(có khác chút là có thêm rất nhiều bài cần xóa ). Nên đôi khi các mod có làm việc cứng nhắc một chút bạn cũng nên thông cảm.

    Cheers!
    Is the moon rising...

  5. #5
    Ngày gia nhập
    08 2008
    Bài viết
    4

    Trích dẫn Nguyên bản được gửi bởi nth4 Xem bài viết
    Các bạn cho mình hỏi IN và EXIST khác nhau chỗ nào khi sử dụng với subquery, sao nhiều khi mình thấy nó đc sử dụng na ná nhau nên đâm ra khó hiểu quá.

    Mong các bạn hướng dẫn và cho ví dụ để trực quan hơn!

    ví dụ như 2 cấu truy vấn sau là giống hay khác nhau: Liệt kê những môn học chưa có kết quả.
    1. Select * from MonHoc where MaMH not in (Select MaMH From KetQua)
    2. Select * from MonHoc where MaMH not exists (Select MaMH From KetQua)
    theo minh thì như thế này :
    not in để khang định la k có trong câu select đấy
    còn not exists thường là để kiểm tra sự tồn tai của bảng hoặc data ... noi chung là kiểm tra sự tồn tai thôi bạn đưa ra 2 câu nay thi đúng là hơi khó thấy đc sự khác nhau thật(mới lại 1 vấn đề có thể gải quyết = nhìu cách mà )
    p/s minh thây chưa có a noi nên minh mơi trả lởi vậy thui con sai thi ai sửa dùm cái

  6. #6
    Ngày gia nhập
    06 2007
    Bài viết
    206

    Mặc định IN và EXISTS trong SQL nghĩa là gì?

    Mình nghĩ là nhìn đoạn code đây sẽ rõ hơn:

    PHP Code:
    USE pubs
    GO
    SELECT DISTINCT pub_name
    FROM publishers
    WHERE EXISTS
       
    (SELECT *
       
    FROM titles
       WHERE pub_id 
    publishers.pub_id
       
    AND type 'business')
    GO

    USE pubs
    GO
    SELECT distinct pub_name
    FROM publishers
    WHERE pub_id IN
       
    (SELECT pub_id
       FROM titles
       WHERE type 
    'business')
    GO 
    Thà để chửi dốt 1 lần, còn hơn ngu cả đời.

  7. #7
    Ngày gia nhập
    11 2007
    Bài viết
    294

    @hoanglinhap: IN và EXIST là 2 keyword trong SQL. Dark không hiểu là tại sao lại liên quan gì đến "sự tồn tại của bảng hay data"?

    Như Dark đã nói ở trên. Cách sử dụng của IN và EXIST hoàn toàn giống nhau. Khác nhau chỉ ở NOT IN và NOT EXIST.

    Bạn có thể xem thêm ví dụ về IN và EXIST trên SQL Server(mấy cái link trên là của Oracle) ở đây :

    http://weblogs.sqlteam.com/mladenp/a.../18/60210.aspx

    Cheers!
    Is the moon rising...

Các đề tài tương tự

  1. sự khác nhau giữa NOT IN và NOT EXISTS ???
    Gửi bởi sergio090588 trong diễn đàn Thắc mắc đại cương Database & Reporting
    Trả lời: 6
    Bài viết cuối: 29-11-2015, 12:15 PM
  2. Lỗi No mapping exists from object type System.Web.UI.WebControls.Image khi insert dữ liệu
    Gửi bởi hunterxh trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 16-03-2012, 03:32 PM
  3. Lỗi The Type System.Web.UI.UpdatePanel exists in both khi debug !
    Gửi bởi nguyenvantien87 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 2
    Bài viết cuối: 15-03-2012, 09:13 PM
  4. LINQ - Cannot attach an entity that already exists
    Gửi bởi Heejin trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 3
    Bài viết cuối: 06-06-2011, 02:31 PM
  5. Ý nghĩa của Exists and not exists trong Datbase?
    Gửi bởi thanhle_uit trong diễn đàn Thắc mắc đại cương Database & Reporting
    Trả lời: 2
    Bài viết cuối: 05-12-2010, 07:40 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn