2012-04-04 70 views
0

嗨,我想在数据库上运行查询,但我不断收到此错误,你看到我的查询有什么问题吗?SQL查询错误#1064

SELECT * 
FROM `data` 
WHERE `Category` LIKE '%beauty%' and not in (SELECT * 
FROM `data` 
WHERE `Category` LIKE 'beauty%') 

感谢名单

+1

...和'Category' NOT IN(SELE ... – 2012-04-04 14:33:15

回答

2

的问题是在这方面:

,而不是在

的corect语法

and not <field name> in (Select <INDIVIDUAL FIELD> from ...) 

你不能在这里做一个子查询子句,您选择所有的coumns(*)您需要在子查询中选择一个单独的列并将其绑定到一个在主要查询中的列。

,所以该完整的语句应该是这样的

SELECT * 
FROM `data` 
WHERE `Category` LIKE '%beauty%' and `Category` not in (SELECT Category 
FROM `data` 
WHERE `Category` LIKE 'beauty%') 

这相当于

SELECT * 
FROM `data` 
WHERE `Category` LIKE '%beauty%' and `Category` NOT LIKE 'beauty%' 

这是一个很大的可读性IMO

欲了解更多信息在一个IN语句中使用子查询在WHERE子句中,参见http://beginner-sql-tutorial.com/sql-subquery.htm

向下滚动查找文章中的“相关子查询”。

+0

“和'Category'不是'Category' LIKE'beauty%''应该是'和'Category'不像'beauty%'” – 2012-04-04 14:41:19

+0

@Maximilian Mayerl - 谢谢! – David 2012-04-04 14:45:10

+0

Thnx。这会在愚蠢地截断表格之前有所帮助:)哦,我至少有转储。 – Evan 2012-04-04 20:06:25

1
SELECT * 
FROM `data` 
WHERE `Category` LIKE '%beauty%' and `Category` not in 
    (SELECT `Category` 
    FROM `data` 
    WHERE `Category` LIKE 'beauty%') 
+0

如果“数据”只包含一列这只会工作,即使当时大多数工具将不惜使用*在子查询在where子句中。 – David 2012-04-04 14:37:47

+0

@DavidStratton良好的捕获。 – 2012-04-04 14:40:43

0
SELECT * FROM `data` 
WHERE `Category` LIKE '%beauty%' 
and `Category` not in (SELECT * 
         FROM `data` 
         WHERE `Category` LIKE 'beauty%') 
0

...和Category

SELECT * 
FROM `data` 
WHERE `Category` LIKE '%beauty%' and `Category` not in (SELECT * 
FROM `data` 
WHERE `Category` LIKE 'beauty%') 
1

我觉得您的查询应该是这样的:为什么你在这里需要一个子查询

SELECT * 
FROM  `data` 
WHERE `Category` LIKE '%beauty%' 
AND  `Category` NOT LIKE 'beauty%' 
0

SELECT * 
FROM  `data` 
WHERE `Category` LIKE '%beauty%' 
AND  `Category` NOT IN 
(
    SELECT `Category` 
    FROM  `data` 
    WHERE `Category` LIKE 'beauty%' 
) 

无论如何,我会重写查询到?这应该是你的查询

SELECT * 
FROM `data` 
WHERE `Category` LIKE '%beauty%' and `Category` not LIKE 'beauty%'