-2

次のようなMySQLクエリがあります。

SELECT column1_value, column2_value 
  FROM some_table
 WHERE column2_value IN (a,lot,of,comma,separated,values)
   AND column1_value NOT IN (SELECT column1_value, 
                                    column3_value 
                               FROM some_table 
                              WHERE column3_value = some_number)
ORDER BY something DESC
LIMIT 4

しかし、私はエラーを受け取り続けます、何が問題なのですか?

INしてからINしないことはできませんか?

前もって感謝します

4

4 に答える 4

1

エラーはこの部分にあります

NOT IN (SELECT column1_value, column3_value 
        FROM some_table 
        WHERE column3_value = some_number)

ご覧のとおり、サブクエリから複数の列を返しています。サブクエリから値を取得するときは、1 つの列のみを返す必要があります。

使ってみてLEFT JOIN

SELECT  column1_value, column2_value 
  FROM  some_table
        LEFT JOIN
        (
            SELECT  column1_value,  column3_value 
            FROM    some_table   
            WHERE column3_value = some_number
        ) x ON sometable.column1_value = x.column1_value
 WHERE  column2_value IN (a,lot,of,comma,separated,values) AND
        x.colName IS NULL
ORDER   BY something DESC
LIMIT 4
于 2013-02-05T15:37:18.497 に答える
1

問題はこの行です

AND column1_value NOT IN (SELECT column1_value, 
                                column3_value 
                           FROM some_table 
                          WHERE column3_value = some_number)

内部サブクエリに注目してください。

SELECT column1_value, column3_value 
FROM some_table 
WHERE column3_value = some_number

データセットに 2 つの列を返しています! それはちょうどあるはずです

SELECT column1_value 
FROM some_table 
WHERE column3_value = some_number

または、テストしたい(単一の!)列。

于 2013-02-05T15:38:18.280 に答える
0

2 番目のサブクエリで複数の列を選択することは許可されていないと思います。

于 2013-02-05T15:37:16.717 に答える
0

その部分で:

(SELECT column1_value, column3_value FROM some_table WHERE column3_value = some_number)

複数の値が選択されています。値のタペルです。

于 2013-02-05T15:37:58.370 に答える