我想在 mysql php 中为自动完成编写一个查询。我有两个表
CREATE TABLE IF NOT EXISTS `city` (
`id` int(22) NOT NULL AUTO_INCREMENT,
`city_name` varchar(44) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=64 ;
表2是
CREATE TABLE IF NOT EXISTS `area` (
`id` int(22) NOT NULL AUTO_INCREMENT,
`city_id` int(44) NOT NULL,
`area_name` varchar(33) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2561 ;
当用户键入任何单词时,它将在区域表(area_name)和城市表(city_name)中搜索...我想在一个字段中返回结果。例如,如果您键入“RAK”,它将在区域表。如果找到它将返回 city_id 和 area_name 否则它将在 city 中搜索。我需要获取 cityid 、 areaid 和匹配的文本。这怎么可能?
最佳答案
使用 OR
子句将导致在两个表中进行表扫描。使用 UNION
将允许使用索引:
SELECT
city_id,
id AS area_id,
area_name AS name,
FROM
area
WHERE
area_name LIKE 'searchterm%'
UNION
SELECT
id AS city_id
NULL AS area_id,
city_name AS name
FROM
city
WHERE
city_name LIKE 'searchterm%'
ORDER BY
name;
关于mysql - 在 mysql 中加入自动完成查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15369018/