2012-04-04 86 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%'