2013-08-01 69 views
0

如何獲得在mysql中沒有孩子的最終類別?
我想從下面的表中得到的結果是
3,5,6。
他們沒有任何子類別。
如何獲得在mysql中沒有孩子的最終類別?

SET FOREIGN_KEY_CHECKS=0; 

-- ---------------------------- 
-- Table structure for `cat` 
-- ---------------------------- 
DROP TABLE IF EXISTS `cat`; 
CREATE TABLE `cat` (
    `categories_id` int(10) NOT NULL auto_increment, 
    `parent_id` int(10) NOT NULL default '0', 
    PRIMARY KEY (`categories_id`) 
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; 

-- ---------------------------- 
-- Records of cat 
-- ---------------------------- 
INSERT INTO `cat` VALUES ('1', '0'); 
INSERT INTO `cat` VALUES ('2', '1'); 
INSERT INTO `cat` VALUES ('3', '1'); 
INSERT INTO `cat` VALUES ('4', '2'); 
INSERT INTO `cat` VALUES ('5', '0'); 
INSERT INTO `cat` VALUES ('6', '4'); 
+0

那麼1,2呢? –

回答

2
select * from cat where categories_id not in (select parent_id from cat) 

難道你問什麼?

同樣可以通過

select * from cat child 
left join cat parent on child.categories_id = parent.parent_id 
where parent.parent_id is null 

Demo

+0

好,whery智能回答 –

1

用途來達到的左自聯接:

select c1.categories_id 
from cat c1 
left join cat c2 
on c2.parent_id = c1.categories_id 
where c2.categories_id IS NULL 
+0

關於c2.parent_id = c1.categories_id :)語法 – Akhil

+0

非常感謝你 –

0
select * from cat where categories_id = "0"; 

或者你也可以做AKHIL的查詢。如果這是你一直在問的問題

相關問題