如何使用LIKE子句比较同一个表中的两列?

时间:2014-12-11 08:26:51

标签: mysql sql

我需要验证Column_1的值是否包含在Column_2的值中。 2列中的数据类型为:

ID   |   column1    |  column2           |
----------------------------
1   |   apple       |  pear,grape, apple |
2   |   pear        |  apple,grape       |
3   |   apple       |  apple             |

查询应该返回第1行和第3行。

我尝试过类似的东西,但不起作用:

SELECT * FROM `table` as C WHERE column_1 LIKE "%C.column_2%"

2 个答案:

答案 0 :(得分:1)

您的比较是倒退的。它应该是:

WHERE column2 LIKE CONCAT('%', column1, '%');

请注意,这将返回如下行:

5 apple pineapple,grapefruit

如果情况不合适,则不应使用LIKEFIND_IN_SET旨在匹配以列分隔的列表中的项目,因此您可以使用:

WHERE FIND_IN_SET(column1, column2)

但是,如果你这样做,请确保你的逗号周围没有任何空格。

如果你规范化你的桌子会好得多。不应使用以逗号分隔的列表,您应该使用多对多关系表。

答案 1 :(得分:-1)

对于那些雄辩的人,您可以解决如下问题:

table::whereRaw("column1 LIKE CONCAT('%', column2, '%')")