我正在网站上搜索,我总共有10个表应该被搜索。
我不想使用这样的多个查询:
SELECT `manufacturer` FROM `auto` WHERE ....
SELECT `city`,`address` FROM `estate` WHERE ....
SELECT `title`,`content` FROM `news` WHERE ....
... and 6 more queries
相反,我想使用单个查询来获取所有需要的数据并分配结果网站网址。
我该怎么做?
答案 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 - 用于构建索引并按索引搜索。