Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将逻辑放入SQL?_Mysql_Sql - Fatal编程技术网

Mysql 如何将逻辑放入SQL?

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

首先,我很抱歉问这样愚蠢的问题。 我是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  |  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,也不是一个标准。