假设我有一个SQL表,其中包含一个名为"Remarks"的varchar [1000]字段.
我想制作一个SQL语句,该语句在执行时将返回1000,或者将来可能更改varchar字段的大小.
有点像SELECT size(Remarks) FROM mytable.
我该怎么做呢?
我有一个非常狭窄的表:user_id,ancestry.
user_id列是自解释的.
祖先列包含用户祖先欢呼的国家/地区.
用户可以在表上有多行,因为用户可以拥有来自多个国家/地区的祖先.
我的问题是:如何选择其祖先来自多个指定国家/地区的用户?
例如,向我展示所有拥有来自英格兰,法国和德国的祖先的用户,并返回符合该标准的每个用户1行.
什么是SQL?
user_id ancestry
--------- ----------
1 England
1 Ireland
2 France
3 Germany
3 Poland
4 England
4 France
4 Germany
5 France
5 Germany
Run Code Online (Sandbox Code Playgroud)
在上述数据的情况下,我预计结果为"4",因为user_id 4具有来自英格兰,法国和德国的祖先.
提前致谢.
PS澄清:是的,user_id/ancestry列创建一个唯一的对,因此不会为给定用户重复一个国家/地区.
PPS我在寻找来自3个国家的用户 - 英格兰,法国和德国(以及这些国家是任意的).
PPPS我不是在寻找特定于某个RDBMS的答案.我想"一般地"回答这个问题.
我满足于为每个查询重新生成where子句,前提是可以通过编程方式生成where子句(例如,我可以构建一个函数来构建WHERE/FROM - WHERE子句).
在一次采访中,我被要求找出每种性别至少有一个孩子的父母的姓名,即至少 1 名男性和 1 名女性。我解决了这个问题。然后他们修改了问题以查找至少有 2 个男孩和 2 个女孩的父母的姓名。这是表: 表名称:Children
这是我用于第一次询问的查询:
SELECT distinct C1.Parent_Name
FROM Children C1
JOIN Children C2
ON C1.Parent_Name = C2.Parent_Name
WHERE C1.Child_Gender = 'Male' AND C2.Child_Gender = 'Female';
Run Code Online (Sandbox Code Playgroud)
您能帮忙解答一下第二个问题吗?