@(一隻心中無碼的程序員)專欄程序員
- ~
題目描述
存在以下的視圖:
create view emp_v as select * from employees where emp_no >10005;
CREATE TABLE employees
(emp_no
int(11) NOT NULL,birth_date
date NOT NULL,first_name
varchar(14) NOT NULL,last_name
varchar(16) NOT NULL,gender
char(1) NOT NULL,hire_date
date NOT NULL,
PRIMARY KEY (emp_no
));
獲取employees中的行數據,且這些行也存在於emp_v中。注意不能使用intersect關鍵字。spa
輸出格式:code
解題思路是運用 LEFT JOIN 鏈接兩表,用 IS NULL 語句限定條件: 一、用 LEFT JOIN 鏈接 film 和 film_category,限定條件爲 f.film_id = fc.film_id,即鏈接電影id和電影分類id,若是電影沒有分類,則電影分類id顯示null 二、再用 WHERE 來限定條件 fc.category_id IS NULL 選出沒分類的電影 /** 注意:最後一句若寫成 ON f.film_id = fc.film_id AND fc.category_id IS NULL,則意義變成左鏈接兩表 film_id 相同的記錄,且 fc.category 的值爲 null,因爲 fc.category的值不爲null,即(f.film_id = fc.film_id AND fc.category_id IS NULL)恆爲FALSE,因此左鏈接後只顯示film表的數據,而 film_category 表的數據全爲 null**/ SELECT f.film_id, f.title FROM film f LEFT JOIN film_category fc ON f.film_id = fc.film_id WHERE fc.category_id IS NULL