2015-10-13 82 views
0

我有一个select语句看起来像这样:子查询,得到的结果SQL

SELECT DISTINCT category_name 
FROM categories c JOIN products p 
    ON c.category_id = p.category_id 
ORDER BY category_name; 

这将返回:

+---------------+ 
| category_name | 
+---------------+ 
| Basses  | 
| Drums   | 
| Guitars  | 
+---------------+ 

我试图使用子查询得到同样的结果,但我没有得到完全一样的东西。下面是我使用的代码:

SELECT DISTINCT category_name FROM 
categories WHERE category_name IN(SELECT distinct 
category_name FROM products) ORDER BY category_name; 

当我运行这段代码,我得到:

+---------------+ 
| category_name | 
+---------------+ 
| Basses  | 
| Brass   | 
| Drums   | 
| Guitars  | 
| Keyboards  | 
+---------------+ 

我在做什么错了,我不是得到相同的输出?

+2

一个是比较类别名称和其他类别ID。不同的查询,所以它们产生不同的结果并不奇怪。为什么你会在两个表中的ID和名称是完全不同的问题。 –

+0

@GordonLinoff好的,我现在看到了错误。我将category_name更改为category_id并获得了正确的结果。谢谢你指出,戈登:) – joanne72205

回答

0

这是因为你使用连接,如果你会使用外部连接这应该工作。 看一看:inner join