gpt4 book ai didi

mysql - 如何检查 SELECT 语句中是否返回行并基于该结果运行另一个查询

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

是否可以检查 SELECT 语句的结果,并根据该查询是否返回行来执行另一个 SELECT 语句?

  • 执行 SELECT 语句 A。
  • 如果已返回行,
    • 执行 SELECT 语句 B。
  • 如果行尚未返回,
    • 执行 SELECT 语句 C。

我想到了以下内容,但它不起作用。

SELECT IF(
(SELECT * FROM client_emails ce WHERE ce.client_id = 3),
(SELECT * FROM client_emails ce WHERE ce.client_id = 3),
(SELECT * FROM emails)
)

最佳答案

你绝对可以检查空值。

以下示例代码将向您展示如何检查空值并使用 TSQL 在条件 block 中使用它

--check for null
SELECT *
FROM dbo.Accounts
WHERE name IS NOT NULL

--check for non-null
SELECT *
FROM dbo.Accounts
WHERE name IS NOT NULL


--checking for null in conditional block
IF(EXISTS(SELECT 1 FROM dbo.Accounts WHERE name IS NULL))
BEGIN
--create new account
INSERT INTO dbo.Account
VALUES('John')
END

----------------- 更新您的评论 ------------------------

根据第一个代码示例,您知道可以使用 EXISTS 检查行是否存在。所以,如果你花一些时间思考一下,你会意识到你可以做如下的事情

/*

Execute SELECT statement A.
If rows had been returned,
Execute SELECT statement B.
*/
--statement B
SELECT *
FROM dbo.Accounts a
WHERE a.name = 'John'
AND EXISTS
(
--statement A
SELECT 1
FROM dbo.Address
WHERE account_id = a.account_id
)

/*

If rows had not been returned,
Execute SELECT statement C.
*/
--statement c
SELECT *
FROM dbo.Accounts a
WHERE a.name = 'David'
AND NOT EXISTS
(
--statement A
SELECT 1
FROM dbo.Address
WHERE account_id = a.account_id
)

关于mysql - 如何检查 SELECT 语句中是否返回行并基于该结果运行另一个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37686195/

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