Mysql 如何将逻辑放入SQL?
首先,我很抱歉问这样愚蠢的问题。 我是sql新手。从互联网上学习了一些基本的东西,但却无法理解这一点 让我们假设我有一个名为post的表,在那里我存储了post。表结构是这样的Mysql 如何将逻辑放入SQL?,mysql,sql,Mysql,Sql,首先,我很抱歉问这样愚蠢的问题。 我是sql新手。从互联网上学习了一些基本的东西,但却无法理解这一点 让我们假设我有一个名为post的表,在那里我存储了post。表结构是这样的 Post_id | poster_id | text 1 | 12 | "hello this is a post" 2 | 15 | "Another post" 3 | 77 | "More counting" user_one
Post_id | poster_id | text
1 | 12 | "hello this is a post"
2 | 15 | "Another post"
3 | 77 | "More counting"
user_one | user_two
1 | 88
84 | 33
1 | 66
有一个名为Friends的表,我在其中存储who’s friend is who。表结构是这样的
Post_id | poster_id | text
1 | 12 | "hello this is a post"
2 | 15 | "Another post"
3 | 77 | "More counting"
user_one | user_two
1 | 88
84 | 33
1 | 66
现在我可以使用这样的SQL从post获取post
SELECT * FROM POST INNER JOIN frnends ON user_one = poster_id WHERE 1
但这将通过将两个表连接在一起得到一个表,我不能这样做一些逻辑吗
从post中选择post,其中poster\u id=选择user\u two,user\u one从friends中选择user\u one=我的\u id或user\u two=我的\u id
也许我的id是一个变量,其中我的id=1
现在来做这种逻辑
任何帮助都会非常好。试试这个:
SELECT *
FROM [sample].[dbo].[posts] a inner join [sample].[dbo].[friends1] b on a.posterId=b.user_one or a.posterId=b.user_two where a.PosterId=12
试试这个:
SELECT *
FROM [sample].[dbo].[posts] a inner join [sample].[dbo].[friends1] b on a.posterId=b.user_one or a.posterId=b.user_two where a.PosterId=12
对不起,我没有评论的名声。Gamal的解决方案应该加以改进,以防止My_id的帖子被退回
SELECT *
FROM post p
INNER JOIN friends AS f on p.poster_id IN (f.user_one, f.user_two)
WHERE My_id IN (f.user_one, f.user_two)
AND p.poster<>My_id;
或者如果你真的想要那些帖子
SELECT *
FROM post p
INNER JOIN friends AS f on p.poster_id IN (f.user_one, f.user_two)
WHERE My_id IN (f.user_one, f.user_two)
AND p.poster<>My_id
UNION
SELECT *, My_id AS user_one, NULL AS user_two
FROM post p
WHERE p.poster=My_id;
问题是,对于我的id所属的每一个关系,Gamals建议将通过我的id返回每一篇帖子一次。对不起,我没有评论的声誉。Gamal的解决方案应该加以改进,以防止My_id的帖子被退回
SELECT *
FROM post p
INNER JOIN friends AS f on p.poster_id IN (f.user_one, f.user_two)
WHERE My_id IN (f.user_one, f.user_two)
AND p.poster<>My_id;
或者如果你真的想要那些帖子
SELECT *
FROM post p
INNER JOIN friends AS f on p.poster_id IN (f.user_one, f.user_two)
WHERE My_id IN (f.user_one, f.user_two)
AND p.poster<>My_id
UNION
SELECT *, My_id AS user_one, NULL AS user_two
FROM post p
WHERE p.poster=My_id;
问题是,Gamals建议将针对我的id所属的每个关系,按我的id返回每个帖子一次。您应该指定要完成的任务。您想查看您所有的帖子、您所有朋友的帖子,还是仅查看您朋友的帖子?还有,在朋友中,如果我是你的朋友,你会自动成为我的朋友吗?还是我总是选择我的朋友?我们都是朋友。我想让我的朋友也发帖子,你应该具体说明你想要完成什么。您想查看您所有的帖子、您所有朋友的帖子,还是仅查看您朋友的帖子?还有,在朋友中,如果我是你的朋友,你会自动成为我的朋友吗?还是我总是选择我的朋友?我们都是朋友。我想让我的朋友也发帖子,我认为这是错误的SQL方言。它不适用于MySQL,也不是一个标准。我认为这是错误的SQL方言。它不适用于MySQL,也不是一个标准。