我有两节课
User
和article
User
与文章
one-to-many
的关系
我希望得到用户
的文章username
和文章id
select distinct user.articles
from User as user inner join user.articles as article
where article.user.username = 'sammer' and article.id = 8
如果ID与用户撰写的文章不匹配,我会得到与预期相同的结果where article.user.username = 'sammer'
或没有结果
而我将另一个限制添加为article.id =8
。它再次显示了所有结果。它应该提供一个独特的结果或根本没有结果。
例如:假设用户已经写了id为#8,9,10的文章。当我点击上面的查询时,它会给出所有3个结果。但是,如果我将id更改为除了8,9,10以外的任何内容。它没有显示任何结果。但它显示了当id是8,9或10
中的任何一个时的所有结果
请给出你的建议。我可能做错了什么。 谢谢你的时间!
答案 0 :(得分:1)
选择符合过滤条件的文章:
select a
from Article a
where a.user.username = 'sammer' and a.id = 8
答案 1 :(得分:0)
我希望根据用户的用户名和文章ID获取文章
就像@DraganBozanovic所说的那样,你只需要查询Article
,而不是像User
那样查询select distinct user.articles ...
的文章集article.user.username = 'sammer' and article.id = 8
假设用户已经写了id为#8,9,10的文章。当我打的时候 在上面的查询中,它给出了所有3个结果。但是,如果我将id更改为 除了8,9,10以外的任何东西。它没有显示任何结果。但它表明 当id是8,9或10
中的任何一个时的所有结果
当条件Article
匹配时,您发现某个特定select distinct user.articles
与某个用户相关联,但您要求提供该用户的文章 select distinct article
from User as user inner join user.articles as article
where article.user.username = 'sammer' and article.id = 8
而不是找到你刚发现的文章。这就是为什么你最终得到所有用户的文章8,9,10。
如果您想获得第8条,请执行以下操作:
struct ListNode<T> {
val: T,
tail: List<T>
}
struct List<T>(Option<Box<ListNode<T>>>);
当 article.id 8不存在或其链接用户具有其他名称时,将返回文章或无/例外。