我有一个列“代码”,可能有一串多个值,例如“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
答案 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
请注意,如果您要加入多个列,这将会很慢。您不仅可以消除使用索引的可能性,还可以在每次比较时执行非常慢的字符串操作。我不建议在非常大的桌子上使用它。如果您的数据集很大,您可能需要考虑重新架构数据库。