我有兩個Customers和Call_center_logs表。mySQL中的NOT IN語法幫助
這裏是SQL 的Sqlfiddle是在這裏:http://sqlfiddle.com/#!2/5da69/3
CREATE TABLE `Call_Center_Log` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Customer_ID` int(11) DEFAULT NULL,
`Date_Done` date DEFAULT NULL,
PRIMARY KEY (`ID`));
CREATE TABLE `Customer` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Criteria` varchar(45) DEFAULT NULL,
`Criteria1` int(11) DEFAULT NULL,
`Criteria2` int(11) DEFAULT NULL,
`Criteria3` int(11) DEFAULT NULL,
`Ctiteria4` varchar(45) DEFAULT NULL,
`state` varchar(45) DEFAULT NULL,
`last_name` varchar(45) DEFAULT NULL,
`Priority` int(11) DEFAULT NULL,
`first_name` varchar(45) DEFAULT NULL,
`company_id` int(11) DEFAULT NULL,
PRIMARY KEY (`ID`));
INSERT INTO `Customer` (`Criteria`, `Criteria1`, `Criteria2`, `Criteria3`, `state`, `last_name`, `Priority`, `first_name`, `company_id`) VALUES ('Gold', '10001', '999998', '1001', 'CT', 'Smith', '5', 'Jim', '1');
INSERT INTO `Customer` (`Criteria`, `Criteria1`, `Criteria2`, `Criteria3`, `state`, `last_name`, `Priority`, `first_name`, `company_id`) VALUES ('Gold', '10001', '999998', '1001', 'ME', 'Jones', '9', 'Tom', '2');
INSERT INTO `Customer` (`Criteria`, `Criteria1`, `Criteria2`, `Criteria3`, `state`, `last_name`, `Priority`, `first_name`,`company_id`) VALUES ('Silver', '9999', '1000000', '999', 'TX', 'Tanaka', '3', 'Yoshi', '3');
INSERT INTO `Customer` (`Criteria`, `Criteria1`, `Criteria2`, `Criteria3`, `state`, `last_name`, `Priority`, `first_name`,`company_id`) VALUES ('Gold', '10001', '999998', '1001', 'CT', 'Blake', '13', 'Tom', '1');
INSERT INTO `Customer` (`Criteria`, `Criteria1`, `Criteria2`, `Criteria3`, `state`, `last_name`, `Priority`, `first_name`,`company_id`) VALUES ('SIlver', '9999', '1000000', '999', 'TX', 'Nakamoto', '3', 'Kesuke', '1');
INSERT INTO `Call_Center_Log` (`Customer_ID`, `Date_Done`) VALUES ('2', '2013-05-29');
INSERT INTO `Call_Center_Log` (`Customer_ID`, `Date_Done`) VALUES ('3', '2013-05-29');
INSERT INTO `Call_Center_Log` (`Customer_ID`, `Date_Done`) VALUES ('4', '2013-05-29');
INSERT INTO `Call_Center_Log` (`Customer_ID`, `Date_Done`) VALUES ('5', '2013-04-01');
我需要找出什麼是客戶符合下列條件:(這只是正常)
SELECT *
FROM Customer
WHERE Criteria= 'Gold'
AND Criteria1 > 10000
AND Criteria2 < 999999
AND Criteria3 >1000
AND state IN('CT','ME','IL','NV')
AND (Ctiteria4 is null OR Ctiteria4 ='')
Order by Priority DESC
它給我記錄
ID Last Name etc....
4 Blake
2 Jones
1 Smith
我的打嗝來了在我必須弄清楚上述標準的同時,我還需要排除今天已經被叫的客戶。這將使我簡單地記錄ID 1 /史密斯。
我正在摸索着一個NOT IN,如下圖所示。
SELECT *
FROM Customer
WHERE Criteria= 'Gold'
AND Criteria1 > 10000
AND Criteria2 < 999999
AND Criteria3 >1000
AND state IN('CT','ME','IL','NV')
AND (Ctiteria4 is null OR Ctiteria4 ='')
--> AND ID not in (Select Customer_ID FROM Call_Center_Log WHERE Customer_ID = id AND Taked_to_date > CURDATE())
Order by Priority DESC
什麼是正確的語法?
請發表您使用下一次的確切代碼.. –
這是確切的代碼..... – JVMX
正如其他人所提到的,你'在選擇*'你的子查詢sql小提琴,但'在您的文章中選擇Customer_ID' ..這是問題。 –