You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于示例数据,如何用SQL查询同一表中不能食用苹果的所有ID

查找无法食用苹果的ID:SQL解决方案

嘿,这个需求很常见,我来给你两种实用的SQL解法,适配不同的数据库场景!

首先明确假设:你的表名为food_preferences,包含两个字段——id(整数类型,标识用户ID)和edible_foods(字符串类型,存储用中文逗号、分隔的可食用食物列表)。

方法1:通用字符串匹配(支持所有SQL数据库)

这是最普适的写法,利用NOT LIKE直接筛选出不包含“苹果”的记录:

SELECT id
FROM food_preferences
WHERE edible_foods NOT LIKE '%苹果%';

这个方法简单直接,只要你的食物列表里“苹果”是作为独立项存在的(就像你给出的示例数据那样),完全可以满足需求。

方法2:精准匹配分隔项(适用于MySQL等支持FIND_IN_SET的数据库)

如果担心出现类似“苹果派”这种包含“苹果”但不是目标食物的误判(虽然你的场景里没有,但这个方法更严谨),可以用FIND_IN_SET函数。注意这个函数默认识别英文逗号作为分隔符,所以需要先把中文逗号替换成英文逗号:

SELECT id
FROM food_preferences
WHERE FIND_IN_SET('苹果', REPLACE(edible_foods, '、', ',')) = 0;

当FIND_IN_SET返回0时,说明“苹果”不在该ID的可食用食物列表里。

预期结果

根据你提供的示例数据,执行任意一种查询后,都会得到以下ID:

  • 2(对应食物:葡萄、梨)
  • 4(对应食物:橙子)
  • 6(对应食物:梨、橙子)

内容的提问来源于stack exchange,提问作者user9256550

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:00:23