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 中的每个变量都需要从tableA.

4

1 回答 1

2

条件根据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'
于 2013-11-08T14:51:13.683 回答