Làm cách nào để chọn hai cột trong mysql?

Bạn muốn nối các bảng trên nhiều cột bằng cách sử dụng khóa ghép chính trong một bảng và khóa ghép ngoại trong bảng khác

Thí dụ

Cơ sở dữ liệu của chúng tôi có ba bảng tên là

SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
1,
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
2 và
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
3. Bảng
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
1 có dữ liệu trong các cột sau.
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
5 [khóa chính],
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
6 và
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
7

idfirst_namelast_name1EllieWillson2TomBrown3SandraMiller

Bảng

SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
2 có dữ liệu trong các cột sau. khóa chính [
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
9 và
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
10],
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
11 và
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
12

student_idcourse_codeis_activestart_date1GD03true2020-01-201AP01false2020-03-102SL01true2020-05-053SL01true2020-06-01

Bảng

SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
3 có dữ liệu trong các cột sau. khóa ngoại [
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
9 và
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
10, khóa chính của bảng
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
2],
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
17 và
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
18

student_idcourse_codestatusamount1GD03pay2301AP01pending1002SL01pending803SL01pending110

Hãy hiển thị tên, mã khóa học, trạng thái và số tiền thanh toán của từng sinh viên

Dung dịch

SELECT
  s.last_name, s.first_name,
  p.course_code, p.status, p.amount
FROM enrollment e
JOIN student s
  ON s.id=e.student_id
JOIN payment p
  ON p.course_code=e.course_code
	AND p.student_id=e.student_id;
last_namefirst_namecourse_codestatusamountWillsonEllieGD03đã thanh toán230WillsonEllieAP01đang chờ xử lý100BrownTomSL01đang chờ xử lý80MillerSandraSL01đang chờ xử lý110

Thảo luận

Nếu bạn muốn lấy dữ liệu được lưu trữ trong các bảng được nối bằng một khóa phức hợp, là khóa chính trong một bảng và khóa ngoại trong một bảng khác, chỉ cần sử dụng điều kiện nối trên nhiều cột

Trong một bảng đã nối [trong ví dụ của chúng tôi,

SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
2], chúng tôi có một khóa chính được tạo từ hai cột [
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
9 và
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
10]. Trong bảng thứ hai [
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
3], chúng tôi có các cột là khóa ghép ngoại [
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
9 và
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
10]. Làm thế nào chúng ta có thể nối các bảng với các phím ghép này?

Dễ. Chúng ta chỉ cần sử dụng mệnh đề

SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
25 với nhiều hơn một điều kiện bằng cách sử dụng toán tử AND sau điều kiện đầu tiên. Trong ví dụ của chúng tôi, chúng tôi sử dụng điều kiện này

SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
26

Trong phần đầu tiên, chúng tôi sử dụng cột

SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
9 từ bảng
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
2 và
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
9 từ bảng
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
3. Ở điều kiện tiếp theo, chúng ta lấy cột
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
10 từ bảng
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
2 và
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
10 từ bảng
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
3

Lưu ý rằng các cột

SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
9 và
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
10 tạo thành khóa chính trong bảng
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
2. Do đó, chúng được sử dụng trong bảng
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
3 làm khóa ngoại

Trong SQL, nhiều trường cũng có thể được thêm vào với mệnh đề DISTINCT. DISTINCT sẽ loại bỏ những hàng có tất cả các trường đã chọn giống hệt nhau

nội dung

  • Câu lệnh Select mẫu
  • Chọn với sự khác biệt trên hai cột
  • Chọn với sự khác biệt trên ba cột
  • Chọn khác biệt trên tất cả các cột của truy vấn đầu tiên
  • Chọn với sự khác biệt trên nhiều cột và sắp xếp theo mệnh đề
  • Hàm Count[] và chọn khác biệt trên nhiều cột

Thí dụ. Câu lệnh CHỌN mẫu

Đây là một truy vấn đơn giản trên một số cột đã chọn trong bảng đơn đặt hàng trong đó agent_code='A002'

Mã SQL

SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';

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


Cây đại số quan hệ


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


đầu ra

AGENT_CODE ORD_AMOUNT CUST_CODE     ORD_NUM
---------- ---------- ---------- ----------
A002             2500 C00005         200106
A002              500 C00022         200123
A002              500 C00009         200120
A002              500 C00022         200126
A002             3500 C00009         200128
A002             1200 C00009         200133
A002             4000 C00022         200113

Kết quả trên cho thấy cùng một agent_code, ord_amount và cust_code xuất hiện nhiều lần trong bảng đơn hàng

Thí dụ. CHỌN với DISTINCT trên hai cột

Để lấy các hàng giống hệt nhau [dựa trên hai cột agent_code và ord_amount] một lần từ bảng đơn hàng, có thể sử dụng câu lệnh SQL sau

Mã SQL

SELECT DISTINCT agent_code,ord_amount
FROM orders 
WHERE agent_code='A002';

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


Cây đại số quan hệ


đầu ra

AGENT_CODE ORD_AMOUNT
---------- ----------
A002             3500
A002             1200
A002             4000
A002              500
A002             2500

trình bày bằng hình ảnh


Thí dụ. CHỌN với DISTINCT trên ba cột

Để lấy các hàng giống hệt nhau [dựa trên ba cộtagent_code, ord_amount và cust_code] một lần từ bảng đơn hàng, có thể sử dụng câu lệnh SQL sau

Mã SQL

SELECT DISTINCT agent_code, ord_amount,cust_code
FROM orders 
WHERE agent_code='A002';

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


Cây đại số quan hệ


đầu ra

AGENT_CODE ORD_AMOUNT CUST_CODE
---------- ---------- ----------
A002              500 C00022
A002             3500 C00009
A002             2500 C00005
A002              500 C00009
A002             4000 C00022
A002             1200 C00009

trình bày bằng hình ảnh


Thí dụ. CHỌN với DISTINCT trên tất cả các cột của truy vấn đầu tiên

Để lấy các hàng giống hệt nhau [trên bốn cột agent_code, ord_amount, cust_code và ord_num] một lần từ bảng đơn hàng, có thể sử dụng câu lệnh SQL sau

Mã SQL

SELECT DISTINCT agent_code,ord_amount,cust_code,ord_num  
FROM orders 
WHERE agent_code='A002';

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


Cây đại số quan hệ


đầu ra

________số 8

Trong kết quả ở trên, tất cả các hàng có agent_code là 'A002' đã trả về vì không có hàng nào giống nhau trên agent_code, ord_amount, cust_code và ord_num. Xem phần trình bày sau.

trình bày bằng hình ảnh


CHỌN với DISTINCT trên nhiều cột và mệnh đề ORDER BY

Bạn có thể sử dụng mệnh đề theo thứ tự trong câu lệnh chọn với sự khác biệt trên nhiều cột. Đây là một ví dụ

Mã SQL

SELECT DISTINCT agent_code,ord_amount
FROM orders 
WHERE agent_code='A002' 
ORDER BY ord_amount;

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


Cây đại số quan hệ


đầu ra

SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders 
WHERE agent_code='A002';
0

trình bày bằng hình ảnh

Hàm COUNT[] và CHỌN với DISTINCT trên nhiều cột

Bạn có thể sử dụng hàm đếm [] trong một câu lệnh chọn có sự khác biệt trên nhiều cột để đếm các hàng riêng biệt. Đây là một ví dụ

Chủ Đề