假设您有两个表:
table1 table2
id | cityA | cityB id | cities_queue|
1 a c 1 a , b , d
2 s f 2 a , b , c ,e
3 d m 3 a , m , d , e
我想仅返回包含cityA和cityB的表2的那些行,具有此特定顺序,第一个cityA和after(某处...)来到cityB。 因此,唯一可接受的结果必须是(a,b,c,e)。首先想到的是使用LIKE命令查找哪个table2行包含cityA,然后使用substr()仅接收cityA之后的一部分cities_queue,并再次使用LIKE()为cityB。所以我的问题是:是否可以只使用一次LIKE()保存为类似
的字符串 (cityA) - % - (cityB)
其中%=通配符 查找包含cityA和cityB的所有cities_queue,无论它们之间是什么;如果是,请提供正确的语法。感谢
答案 0 :(得分:1)
不确定您的观点是什么,但是如果元素的顺序非常重要:
http://sqlfiddle.com/#!9/83459/7
SELECT t2.*
FROM table2 t2
INNER JOIN table1 t1
ON t2.cities_queue LIKE CONCAT('%',t1.cityA,' , ',t1.cityB,'%')
或
SELECT t2.*
FROM table2 t2
INNER JOIN table1 t1
ON t2.cities_queue LIKE CONCAT('%',t1.cityA,' % ',t1.cityB,'%')
答案 1 :(得分:0)
与@ Alex相似,但我选择regex:
SELECT *
FROM table2 t2
INNER JOIN table1 t1
ON t2.cities_queue regexp CONCAT(t1.cityA,'.*',t1.cityB)