MySQL多表查詢是數(shù)據(jù)庫中非常重要的一種查詢方式,經(jīng)常會在實際工作中用到。下面來介紹一個實訓(xùn)題目,通過該題目的練習(xí)可以加深對MySQL多表查詢的理解。
題目描述:
假設(shè)有兩張表,USERS表和ORDERS表,表結(jié)構(gòu)如下: USERS表: user_id int(11) NOT NULL AUTO_INCREMENT, username varchar(50) NOT NULL, email varchar(50) NOT NULL, password varchar(128) NOT NULL, PRIMARY KEY (user_id) ORDERS表: order_id int(11) NOT NULL AUTO_INCREMENT, user_id int(11) NOT NULL, order_date datetime NOT NULL, order_num int(11) NOT NULL, PRIMARY KEY (order_id) 編寫SQL語句實現(xiàn)以下查詢: 1. 查詢用戶名為Tom的用戶所有訂單的訂單號和訂單日期。 2. 查詢訂單數(shù)量大于等于3的用戶的用戶名和訂單數(shù)量。 3. 查詢有訂單的用戶數(shù)。
解題思路:
1. 需要聯(lián)結(jié)USERS表和ORDERS表,并通過WHERE條件限定用戶名為Tom的用戶。 2. 仍然是聯(lián)結(jié)USERS表和ORDERS表,通過GROUP BY語句按照用戶名分組,通過HAVING子句篩選訂單數(shù)量大于等于3的用戶。 3. 使用COUNT函數(shù)計算ORDERS表中不重復(fù)的用戶數(shù)。
解題代碼:
1. SELECT order_num, order_date FROM ORDERS o INNER JOIN USERS u ON o.user_id = u.user_id WHERE u.username = 'Tom'; 2. SELECT u.username, COUNT(*) AS order_count FROM ORDERS o INNER JOIN USERS u ON o.user_id = u.user_id GROUP BY u.username HAVING order_count >= 3; 3. SELECT COUNT(DISTINCT user_id) FROM ORDERS;
以上是關(guān)于MySQL多表查詢實訓(xùn)題的詳細介紹和解題思路及代碼,希望對大家有所幫助。