2012-01-16 82 views
7

Tôi có hai bảng trong cơ sở dữ liệu SQL Server của mình. Đầu tiên là Test1 và thứ hai là Test2. Có một cột RegNo trong cả hai bảng.Cách chọn các giá trị từ hai bảng khác nhau trong SQL

Bây giờ tôi muốn chọn các giá trị từ cả hai bảng cho một số RegNo cụ thể.

Đây là những gì tôi đang làm

SELECT Test1.SurName, Test2.Class, Test2.Medium 
FROM Test1,Test2 JOINS 
Test2 ON Test1.RegNo = Test2.RegNo 

Nhưng truy vấn của tôi là đưa ra lỗi.

Trả lời

6
SELECT Test1.SurName, Test2.Class, Test2.Medium 
FROM Test1 
INNER JOIN Test2 ON Test1.RegNo = Test2.RegNo 
+0

vì RegNo ở cả hai bảng, bạn cũng có thể sử dụng 'USING'' SELECT Test1.SurName, Test2.Class, Test2.Medium FROM Test1 INNER JOIN Test2 USING (RegNo) ' –

+1

@Bondye Có, bạn có thể - nhưng bạn không nên: Bạn kết thúc với cùng một kế hoạch thực hiện, nhưng với một đoạn mã SQL, điều đó không cổng tốt. Quy tắc chung của tôi: Nếu tính năng dành riêng cho nền tảng mang đến hiệu suất hoặc chức năng: Sử dụng tính năng đó. Nếu nó chỉ rephrases một cấu trúc di động: Do ** không ** sử dụng nó. –

8
select 
    Test1.SurName, 
    Test2.Class, 
    Test2.Medium 
from Test1 
inner join Test2 
on Test1.RegNo = Test2.RegNo 

Và nếu bạn muốn chọn dữ liệu của bạn cho một cụ thể RegNo, chỉ cần thêm một điều khoản WHERE đến cùng, như vậy:

select 
    Test1.SurName, 
    Test2.Class, 
    Test2.Medium 
from Test1 
inner join Test2 
on Test1.RegNo = Test2.RegNo 
where Test1.RegNo = 123456 -- or whatever value/datatype your RegNo is 
+0

bạn ở nơi nhanh hơn tôi, được thăng hạng :) – Marco

+0

@Marco :) Cảm ơn bạn! Có vẻ như chỉ là một vài giây. ;) –

3
SELECT Test1.SurName, Test2.Class, Test2.Medium 
FROM Test1 
INNER JOIN Test2 
ON Test1.RegNo = Test2.RegNo 

xin vui lòng xem a visual explanation of joins đây là rất hữu ích trong việc học tham gia.

+0

bạn ở nơi nhanh hơn. +1 –

1

Hãy thử điều này:

SELECT Test1.SurName, Test2.Class, Test2.Medium 
FROM Test1 INNER JOIN Test2 
ON Test1.RegNo = Test2.RegNo 
WHERE Test1.RegNo = desired_id 
1

Câu hỏi rất cơ bản, hãy thử google thời gian tiếp theo và điều này bây giờ:

SELECT Test1.SurName, Test2.Class, Test2.Medium 
FROM Test1 
inner join Test2 ON Test1.RegNo = Test2.RegNo 
1

Đây là truy vấn của bạn với sự điều chỉnh.

SELECT Test1.SurName, Test2.Class, Test2.Medium 
    FROM Test1 INNER JOIN Test2 ON Test1.RegNo = Test2.RegNo where Test2.RegNo=Test1.RegNo; 

Ngoài ra, bạn có thể lọc truy vấn bằng cách cung cấp RegNo, trên đóBảng bạn muốn.

Các vấn đề liên quan