使用WHERE IN时包含重复项

时间:2013-11-08 14:28:58

标签: php mysql

我跟随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中的每个变量都需要从tableA返回匹配的id和title。

1 个答案:

答案 0 :(得分:1)

WHERE条件根据条件评估每条记录。它遍历数据库中的数据并询问每一行“是此记录IN (...)?”。然后它只返回与过滤器匹配的记录。您可以轻松地在PHP中对返回的数据进行后处理,并复制您需要复制的任何内容,这将是最有效的方法。数据库不必返回两次相同的数据,如果需要,您可以在PHP中自己复制数据。

如果您需要数据库返回重复的行,您几乎必须自己将各个查询连接到记录集。您需要发出多个联合查询,而不是一个... 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'