在下面的现有语句中,我将主机名和ip地址与从另一个表中检索到的记录进行比较,并在找到该列时将其标记为true,但当主机名也是检索到的记录的identifer的一部分时(即
host_name=abc
identifier=abc.google.com should also be true
CASE
WHEN
(
(`inv_y`.`host_name` <> '')
AND
`inv_y`.`host_name` IN (SELECT `inv_x`.`identifier`
FROM `inv_x`
ORDER BY `inv_x`.`creation_date` DESC
)
)
OR
(
(`inv_y`.`ip_address` <> '')
AND
inv_y`.`ip_address` IN (SELECT `inv_x`.`identifier`
FROM `inv_x`
ORDER BY `inv_x`.`creation_date` DESC
)
)
THEN
'True'
ELSE
'False'
END
1条答案
按热度按时间y3bcpkx11#
看来你可以从中受益
EXISTS
功能。类似以下的方法可能会起作用:下面是一个演示:sqlfiddle
请注意,如果可以使用1或0而不是true或false,则可以进一步简化上述内容。
EXISTS
如果找到行,则返回1;如果没有,则返回0,并且CASE
是否有简单的方法将其转换为“真”或“假”,因此您可以简单地获得以下信息: