SQLite子查询仅返回首条结果 如何获取全部匹配记录
故障原因
查询仅返回单条结果的核心问题是使用了=运算符匹配子查询结果:当子查询返回该用户对应的15条推文id(多行结果集)时,=的等值判断只会取结果集的第一行做匹配,因此只能得到第一条推文对应的情感值。
额外注意:你描述表结构时提到sentiment_t存储推文关联id的字段为tweet_id,编写查询时请确认实际关联字段名,不要误用字段导致匹配错误。
修复方法
方法1:最小改动,替换运算符
将=替换为IN运算符即可,IN专门用于判断值是否存在于多行结果集合中,修改后SQL如下:
SELECT sentiment_c FROM sentiment_t WHERE sentiment_t.tweet_id IN ( -- 若sentiment_t关联推文的字段名确实为id,此处替换为id即可 SELECT id FROM tweet_data WHERE user_id = 1662186764 );
方法2:JOIN关联查询(推荐写法)
使用内关联的写法逻辑更直观,后续需要同时拉取推文内容、发布时间等跨表字段时扩展更方便,写法如下:
SELECT s.sentiment_c FROM sentiment_t s INNER JOIN tweet_data t ON s.tweet_id = t.id -- 关联字段请和实际表结构保持一致 WHERE t.user_id = 1662186764;
两种写法执行效果完全一致,都会返回目标用户关联的全部15条推文对应的情感值。
内容的提问来源于stack exchange,提问作者Biscotti
相关产品推荐
相关产品推荐

