SQL连接不是真正的结果
我有一个包含一些表的数据库,我想从一个用户检索我遵循的最后8个用户: 这是我的桌子: 表格用户:SQL连接不是真正的结果,sql,Sql,我有一个包含一些表的数据库,我想从一个用户检索我遵循的最后8个用户: 这是我的桌子: 表格用户: - id - name - surname - created - modified 2 | Caesar | Surname1 3 | Albert | Surname2 4 | Paul | Surname3 5 | Nicol | Surname4 桌上三通 - id - name - user_id 1 | first | 3 2 | second | 3 3 | third
- id
- name
- surname
- created
- modified
2 | Caesar | Surname1
3 | Albert | Surname2
4 | Paul | Surname3
5 | Nicol | Surname4
桌上三通
- id
- name
- user_id
1 | first | 3
2 | second | 3
3 | third | 4
4 | fourth | 4
5 | fifth | 5
6 | sixth | 5
7 | seventh | 5
表用户跟踪
- id
- user_follower_id //the user that decide to follo someone
- user_followed_id //the user that I decide to follow
1 | 2 | 3
2 | 2 | 5
我希望通过其创建者检索此T恤,因为我的id为2我是凯撒,例如:
1 | first | 3
2 | second | 3
5 | fifth | 5
6 | sixth | 5
7 | seventh | 5
例如,如果我跟踪的用户创建了4个tee,我跟踪的另一个tee为1,另一个tee为2,我认为我可以检索所有站点中最后插入的tee,因为它们是从我跟踪的用户创建的。
但我只检索到一个用户的一个tee
这是我的疑问:
SELECT *, `tee`.`id` as id, `tee`.`created` as created, `users`.`id` as user_id, `users`.`created` as user_created
FROM (`tee`)
LEFT JOIN `users`
ON `users`.`id` = `tee`.`user_id`
LEFT JOIN `user_follow` ON `tee`.`user_id` = `user_follow`.`user_followed_id`
WHERE `tee`.`id` != '41' AND
`tee`.`id` != '11' AND
`tee`.`id` != '13' AND
`tee`.`id` != '20' AND
`tee`.`id` != '14' AND
`tee`.`id` != '35' AND
`tee`.`id` != '31' AND
`tee`.`id` != '36' AND
`user_follow`.`user_follower_id` = '2'
ORDER BY `tee`.`created` desc LIMIT 8
我添加了8个我不想检索的tee id,因为它们是特殊的
为什么这个查询不起作用?
我认为问题在于左连接,或者我必须做其他事情来恢复这个结果
谢谢您可以在'41'、'11'、,。。。而不是tee.id!='41'和T.id!='11'...您可以在'41','11',中使用Not,。。。而不是tee.id!='41'和T.id!='11’…使用UNION子句。首先选择您的T形三通,然后从您跟随的人中选择T形三通。使用UNION子句。首先选择您的t形三通,然后从您关注的人中选择t形三通。我看不出您的查询有任何错误-我已更新了使用内部联接和使用NOT IN的语法:
我看不出您的查询有任何错误-我已更新了使用内部联接和不在中的语法:
不起作用的意思是…?我写过,我只检索一个t行,而不是多个,因为我从我的follower中插入了更多的t。您可以发布示例数据和所需的结果-您的查询没有严重错误。你可以用NOT-IN代替所有这些和语句。此外,无需在用户\ follow表上使用外部联接,因为您将该表包括在WHERE条件中。但是您的查询应该运行…很抱歉问这个问题,但我看到有人有这样的误解:您是直接在db查询工具中使用SQL,还是使用其他语言查看结果?例如,在php中,使用默认的db方法,您需要在结果上循环以获得所有行添加一个示例@sgeddes不起作用意味着…?我写道,我只检索了一个t形行,而不是多个,因为我从后面插入了更多的t形行。您可以发布示例数据和所需结果-您的查询没有严重错误。你可以用NOT-IN代替所有这些和语句。此外,无需在用户\ follow表上使用外部联接,因为您将该表包括在WHERE条件中。但是您的查询应该运行…很抱歉问这个问题,但我看到有人有这样的误解:您是直接在db查询工具中使用SQL,还是使用其他语言查看结果?例如,在php中,使用默认的db方法,您需要在结果上循环以获得所有行添加一个示例@sgedtest这不是问题的问题这不是问题的问题您能举个例子吗?对不起,我没有时间。你自己试试看,如果不行,我会检查的。你能举个例子吗?对不起,我没有时间。你自己试试看,如果不行,我会检查的。
SELECT *,
`tee`.`id` as id, `tee`.`created` as created, `users`.`id` as user_id, `users`.`created` as user_created
FROM `tee`
JOIN `users` ON `users`.`id` = `tee`.`user_id`
JOIN `user_follow` ON `tee`.`user_id` = `user_follow`.`user_followed_id`
WHERE `tee`.`id` NOT IN (41,11,13,20,14,35,31,36)
AND `user_follow`.`user_follower_id` = '2'
ORDER BY `tee`.`created` desc
LIMIT 8