gpt4 book ai didi

mysql - 获取用户未对 SQL 查询投票的所有配置文件

转载 作者:行者123 更新时间:2023-11-29 06:25:10 25 4
gpt4 key购买 nike

profiles:
+--------+
id
name
surname

voted:
+--------+
id
profileid
targetid

我有一个包含用户配置文件的表和另一个我跟踪谁对谁投票的表。 (profileid 是选民的个人资料 ID,targetid 是被投票人的个人资料 ID)

我愿意:

获取当前用户(例如 ID 为 1)投票(也不包括他自己)的所有个人资料。

我试过这个:

SELECT profiles.name,profiles.surname,voted.targetid 
FROM profiles
JOIN voted
ON profiles.id = voted.profileid
WHERE profiles.id != 1 # exclude self

看直播fiddle在这里,这不起作用,因为我不确定如何形成 JOIN。

如何才能做到这一点?

最佳答案

这里有一个方法:

SELECT 
profiles.name,
profiles.surname
FROM profiles
LEFT JOIN voted
ON profiles.id = voted.targetid
AND voted.profileid = 1 /* <- your param here */
AND voted.profileid != voted.targetid
/* has not voted for him/herself */
WHERE voted.profileid is null

结果如下:http://sqlfiddle.com/#!9/80a6b/14

之所以有效,是因为 LEFT JOINWHERE 子句相结合。

JOIN 查找配置文件已投票的人(不包括自己投票),WHERE 选择与之相反的人(其中 LEFT JOIN 带来空值)。

请注意,我从输出中抑制了 targetid 列,因为我认为它没有意义(我们正在寻找投票存在的对) .

关于mysql - 获取用户未对 SQL 查询投票的所有配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31489432/

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