在mysql JOIN查询中拆分字段值

时间:2013-06-12 01:31:43

标签: mysql join split

我有一个列“代码”,可能有一串多个值,例如“CODE1&CODE2”......我只需要第一个JOIN ......有点像code.split("&")[0]

SELECT myTable.*, otherTable.id AS theID 
FROM myTable INNER JOIN otherTable 
ON myTable.(+++ code before the & +++) = otherTable.code

myTable中的值也可能只是CODE1

1 个答案:

答案 0 :(得分:1)

SUBSTRING_INDEX将完全按照您的意愿执行操作 - 将列的子字符串返回到指定的字符:

SELECT 
    myTable.*, 
    otherTable.id AS theID 
FROM myTable 
INNER JOIN otherTable 
    ON SUBSTRING_INDEX(myTable.code, '&', 1) = otherTable.code

更多信息:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

这是一个演示它的小提琴:http://sqlfiddle.com/#!2/96a6e/2

请注意,如果您要加入多个列,这将会很慢。您不仅可以消除使用索引的可能性,还可以在每次比较时执行非常慢的字符串操作。我不建议在非常大的桌子上使用它。如果您的数据集很大,您可能需要考虑重新架构数据库。