0

こんにちは、データベースでクエリを実行しようとしていますが、このエラーが何度も発生します。クエリに何か問題がありますか?

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

ありがとう

4

6 に答える 6

2

問題は次の領域にあります。

ではない

正しい構文は

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

すべてのカウントを選択している where 句でサブクエリを実行することはできません (*) サブクエリで個々の列を 1 つ選択し、それをメイン クエリの 1 つの列に関連付ける必要があります。

したがって、完全なステートメントは次のようになります

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です

WHERE 句の IN ステートメントでサブクエリを使用する方法の詳細については、http://beginner-sql-tutorial.com/sql-subquery.htmを参照してください。

下にスクロールして、記事の「相関サブクエリ」を見つけます。

于 2012-04-04T14:34:58.997 に答える
1
SELECT *
FROM `data`
WHERE `Category` LIKE '%beauty%' and `Category` not in 
    (SELECT `Category`
     FROM `data`
     WHERE `Category` LIKE 'beauty%')
于 2012-04-04T14:33:53.123 に答える
1

クエリは次のようになります。

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%'
于 2012-04-04T14:37:06.377 に答える
0

なぜここでサブクエリが必要なのですか? これはあなたのクエリでなければなりません

SELECT *
FROM `data`
WHERE `Category` LIKE '%beauty%' and `Category` not LIKE 'beauty%'
于 2012-04-04T14:39:01.623 に答える
0
SELECT * FROM `data`
WHERE `Category` LIKE '%beauty%' 
and `Category` not in (SELECT *
                      FROM `data` 
                      WHERE `Category` LIKE 'beauty%')
于 2012-04-04T14:34:09.060 に答える
0

...そしてCategory

SELECT *
FROM `data`
WHERE `Category` LIKE '%beauty%' and `Category` not in (SELECT *
FROM `data`
WHERE `Category` LIKE 'beauty%')
于 2012-04-04T14:34:11.740 に答える