mysql - 使用 IN 子句从两个表中获取数据
问题描述
我想得到什么?
获取向我发送friend_requests 的人的ID、姓名、电子邮件。我用过的两张表,我想以此为基础获取详细信息
注册-> id,name,email,firmname 和其他几列。
Friends_requests -> id,userId,sentRequests,receivedRequests,friends,dates
请参考以下两张图片。
好友请求表
报名表
我在尝试什么?
SELECT * FROM signup WHERE signup.id IN
(SELECT sentRequests FROM friends_request WHERE friends_request.userId=46)
这个查询只给出一条记录,而如果我使用下面的查询它给出 3 条记录
SELECT * FROM signup WHERE signup.id IN (47,48,49)
我知道为什么第二个查询由于 IN 子句和三个 id 而给出三个记录
但是这个查询也会给出相同的结果,即 47,48,49
SELECT sentRequests FROM friends_request WHERE friends_request.userId=46
但是为什么第一个查询没有给出三条记录呢?
当两个值相同时?那为什么结果不一样呢?
解决方案
关于表friends_requests。列 sentRequests 违反1NF。
如果我是对的,IN 运算符将您的信息作为完整字符串获取,而不是作为单独的 ID 信息。
SELECT *
FROM signup
WHERE signup.id IN ('47,48,49')
what is operator thinks IN ('47,48,49')
what You think IN (47,48,49)
您必须将列值 '47,48,49' 拆分为返回行,以便操作员可以理解,如果您想使用 IN 操作员...
推荐阅读
- apache-kafka - 创建 32 个主题后,Kafka 无法创建内部主题
- android - AsyncTask 仅在调试器中单步执行时执行
- django - django_apscheduler.models.DoesNotExist:DjangoJob 匹配查询不存在
- user-interface - 如何在 xamarin 表单中创建与给定 UX 相同的 UI?
- sql - 不存在的 SQL 查询非常慢
- python - pylint 中生成成员的特定类?
- drupal-modules - 在 drupal 8 中创建对国家/地区具有受限权限的角色
- android - 从android kotlin中的文件夹中获取图像列表
- javascript - 找不到预设“@babel/env”-reactjs
- c# - c# Linq 删除一项