php mysql多表用不同的列搜索方法

时间:2012-12-14 09:58:30

标签: php mysql

我正在网站上搜索,我总共有10个表应该被搜索。

我不想使用这样的多个查询:

SELECT `manufacturer` FROM `auto` WHERE ....
SELECT `city`,`address` FROM `estate` WHERE ....
SELECT `title`,`content` FROM `news` WHERE ....
... and 6 more queries

相反,我想使用单个查询来获取所有需要的数据并分配结果网站网址。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

通常的方法是UNION您的查询

SELECT * FROM (
    (
        SELECT `manufacturer` AS sval FROM `auto` WHERE ....
    )
    UNION
    (
        SELECT CONCAT(`city`,`address`) AS sval FROM `estate` WHERE ....
    )
    UNION
    (
        SELECT CONCAT(`title`,`content`) AS sval FROM `news` WHERE ....
    )
)

答案 1 :(得分:0)

用法分隔查询是很好的解决方案。如果您将在一个查询中使用所有表,则所有表将在查询时锁定。如果您使用LIKE或全文搜索,那么您将无法锁定您的网站。

您可以对每个表使用分隔查询。或者你可以在索引之外进行搜索。例如,您可以使用sphinx - 用于构建索引并按索引搜索。