我有两张桌子。
user_id | food
--------+-------
paul1 | apple
john2 | banana
food_id | food
--------+-------
food001 | burnt apple
food002 | green banana
我想从tbl.B
找到A.food
匹配B.food
的food_id
所有A的食物专栏。
但我可以这样做多次。
SELECT b.food_id FROM B as b WHERE match(food) against('apple')
......我会在其他地方写下food_id。
SELECT b.food_id FROM B as b WHERE match(food) against('banana')
......等等。
有没有办法写出多个单词? 还是我必须写存储过程?或其他什么?
答案 0 :(得分:0)
一种解决方案可能是将表A中的所有食物分成一个字符串,然后将表B的列食物与食物串相匹配。
但它必须作为两个单独的查询运行,如Barmar所述,AGAINST
参数必须是文字字符串。
SELECT GROUP_CONCAT(DISTINCT food SEPARATOR ' ') AS list FROM A;
SELECT b.food_id FROM B as b WHERE match(food) against(list);