我跟随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。
答案 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'