假设我有一个如下表:
Ref|Start point|End point ------------------------- 1|Narva |Tallinn 2|Tartu |Viljandi 3|Pärnu |Tartu 4|Tartu |Jõgeva
这里有两列包含地名。现在我想在两列中搜索匹配某些模式的地名并返回匹配的地名,这意味着:
有没有办法用一些合适的MySQL查询来实现这个目的?表的结构是固定的,因为我需要在现有数据库上运行此搜索。但是我可以创建临时表,如果这会有所帮助。
编辑:为了澄清,我想获得一个匹配地名列表,不匹配行列表。因此,此类型的查询不会产生所需的结果:
SELECT * FROM routes WHERE start_point LIKE '%va' OR end_point LIKE '%va'
此查询将返回如下内容:
但我更愿意:
答案 0 :(得分:0)
1. select Ref,Start_Point,End_point from table where Start_point like 'Ta%' or End_point like 'Ta%'
2. select Ref,Start_Point,End_point from table where Start_point like '%va' or End_point like '%va'
答案 1 :(得分:0)
试试这个
SELECT distinct t1.startpoint, t2.endpoint
FROM `yourtablename` AS t1, (
SELECT *
FROM `yourtablename`
WHERE endpoint LIKE 'Ta%'
) AS t2
WHERE t1.startpoint LIKE 'Ta%'
and t1.startpoint <> t2.endpoint
group by t1.startpoint, t2.endpoint
答案 2 :(得分:0)
你可以为它运行2个查询
<强> 1)强>
SELECT start_point FROM routes WHERE start_point LIKE '%va'
<强> 2)强>
SELECT end_point FROM routes WHERE end_point LIKE '%va'
第一个将提供startpoint
的输出,第二个将提供endpoint
的输出
更新:
到RUN将两者结合起来,你可以像这样使用UNION
SELECT start_point FROM routes WHERE start_point LIKE '%va'
UNION
SELECT end_point FROM routes WHERE end_point LIKE '%va'