0

次のMySQLクエリがあります:

$sql = ' SELECT tableA.id, tableA.title 
        FROM  tableA
        JOIN tableB ON tableA.id = tableB.land_id 
        WHERE tableB.id IN ('.$idlist.')';

問題は、$idlist からの重複も含める必要があることです。WHERE INの一意の一致のみを返します$idlist。したがって、idlist 内の各変数は、一致する id とタイトルを から返す必要がありtableAます。

4

1 に答える 1

2

WHERE条件は、条件に対して各レコードを評価します。データベース内のデータを調べて、各行について「これはレコードIN (...)ですか?」と尋ねます。. 次に、そのフィルターに一致するレコードのみを返します。返されたデータを PHP で簡単に後処理し、複製する必要があるものを複製することができます。これが最も効率的な方法です。データベースは同じデータを 2 回返す必要はありません。必要に応じて、PHP でデータを自分で複製できます。

データベースが重複した行を返す必要がある場合は、個々のクエリを自分でレコードセットに連結する必要があります。1 つのクエリの代わりに、... WHERE `foo` IN ('a', 'b', 'c', 'a')結合された複数のクエリを発行する必要があります。

SELECT ... WHERE foo = 'a'
UNION
SELECT ... WHERE foo = 'b'
UNION
SELECT ... WHERE foo = 'c'
UNION
SELECT ... WHERE foo = 'a'
于 2013-11-08T14:51:13.683 に答える