0

選択クエリは、取得するすべての値に対して個別の行を表示する必要がありますが、このクエリを実行すると、IN 句で使用されるサブクエリから最初の値のみが生成されます。

    SELECT prod_id FROM tbl_product WHERE tbl_product.prod_status = 1 AND 
tbl_product.is_excluded = 0 AND tbl_product.prod_stock_qty > 0 
AND tbl_product.prod_id IN (SELECT rel_prod_ids 
FROM tbl_product_relations WHERE prod_id = '6058')

サブクエリはカンマ区切り値を生成します

誰かが私にこれの解決策を見つけるのを手伝ってもらえますか?

4

2 に答える 2

1

a のJOIN代わりに a を使用するIN

SELECT p.prod_id
FROM tbl_product p JOIN tbl_product_relations pr ON p.prod_id = pr.rel_prod_ids
WHERE p.prod_status = 1
    AND p.is_excluded = 0
    AND p.prod_stock_qty > 0
    AND r.prod_id = '6058'
于 2010-12-30T07:24:20.857 に答える
1

必要なのはfind_in_set

select find_in_set(123, '123,12345,123456');  <-- return 1
select find_in_set(123, '1234,12345,123456'); <-- return 0

この関数は非常に遅く、パフォーマンスに注意してください...

于 2010-12-30T07:39:19.443 に答える