目前,我有4个表,其中有一个列称为userid。有没有一种方法可以编写一个查询,如果用户ID存在于表中,则返回1,如果用户ID不存在,则返回0?
An example of output would be if it exist in all tables:
if exist in TB1 = 1
if exist in TB2 = 1
if exist in TB3 = 1
if exist in TB4 = 1
then returns = 1, 1, 1, 1
An example of output would be if it exist in 3 of the tables:
if exist in TB1 = 1
if exist in TB2 = 1
if exist in TB3 = 0
if exist in TB4 = 1
then returns = 1, 1, 0, 1
3条答案
按热度按时间mnemlml81#
我建议写一个用户自定义函数表
https://www.idug.org/browse/blogs/blogviewer?blogkey=1c83f8d0-6f2c-43c8-8125-bbe127d88f9e
如果这不起作用,您还可以考虑编写标量udf来检查SINGLE表是否包含id。在这种情况下,你必须把表名传递给udf,然后你只需为每个需要检查的表调用udf。
希望这有帮助
093gszye2#
令人惊讶的是,如果一行不存在,如何返回0并不明显。
如果行存在,则返回“1”,如果不存在,则不返回任何内容。
所以你必须把上面的内容嵌入到一个语句中,这个语句将生成零来代替null。
正如另一个答案所建议的那样,创建一个用户定义函数(UDF)
RecordExists('MYTBL1','USERID','MyUser');
可能是值得的,这取决于您需要这种功能的频率。但这超出了你的问题范围。有几种方法可以把多个支票放在一起,这里有一个。
fsi0uk1n3#
试试这个:
| C1| C2| C3| C4|
| --|--|--|--|
| 1 | 1 | 0 | 1 |
fiddle