gpt4 book ai didi

mysql - 如何在没有不同或联合的情况下更正查询用户和 friend 数据的 friend 表

转载 作者:行者123 更新时间:2023-11-29 05:32:12 24 4
gpt4 key购买 nike

我有一张名为 friends 的 table 和一张 table 照片。我正在尝试查询 friend 照片或拥有 friend 照片的用户。我想我需要在 friends 表上为内部连接添加别名,但不确定

Friends Table
user_id int
friend_id int
[other attribute field]

Photos Table
id int
user_id int
[other attribute field]

例如如果我想查询 friend 的照片我会运行

SELECT `photos`.`id` FROM `photos` LEFT JOIN `friends` ON (`friends`.`friend_id` = `photos`.`user_id`) WHERE `friends`.`user_id` = 1

或者如果我只想查询 users 表的 id

SELECT `photos`.`id` FROM `photos` WHERE `photos`.`user_id` = 1

问题是当我尝试在同一个结果集中获取两者时

SELECT  `photos`.`id` 
FROM `photos`
LEFT JOIN `friends` ON ( `friends`.`friend_id` = `photos`.`user_id` )
WHERE `friends`.`user_id` =1
OR `photos`.`user_id` =1
LIMIT 0 , 30

由于左连接,这显然得到了错误的结果我得到了我拥有的每个 friend 的结果

我在想我需要为 OR 子句或其他东西内部连接一个别名表,但无法弄清楚。

最佳答案

如果只对两个第一个查询使用 UNION 会怎么样:

SELECT `photos`.`id` 
FROM `photos`
LEFT JOIN `friends` ON (`friends`.`friend_id` = `photos`.`user_id`)
WHERE `friends`.`user_id` = 1
union all
SELECT `photos`.`id` FROM `photos` WHERE `photos`.`user_id` = 1

如果你不想使用 UNION 那么

SELECT `photos`.`id` 
FROM `photos` where `photos`.`user_id`=1
or `photos`.`user_id`
in (select `friends`.`friend_id` from `friends`
where `friends`.`user_id` = 1)

关于mysql - 如何在没有不同或联合的情况下更正查询用户和 friend 数据的 friend 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13837205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com