比较相同 table 中同一行的主 ID
Comparing primary Id of the same row in same table
找不到和我一样的问题希望大家能帮帮我。
我对我的 SP 有这个查询,我需要做的是根据用户给定的参数检查公司 ID 是否相同。
我有两个参数,paramOrgA 和 paramOrgB,它们将由用户提供。
我所做的是重复相同的查询并将返回值设置在两个变量中
orgAId 和 orgBId 然后使用 IF 语句比较值。
是否有另一种方法可以做到这一点,或者我应该说优化的方法来做到这一点?
下面是我写的查询。
BEGIN
declare orgAId int;
declare orgBId int;
declare orgStatus bool;
SET orgAId = (SELECT c.Id
FROM Members as `m`
INNER JOIN Company as `c`
ON m.CompanyId = c.Id
WHERE m.Id = paramOrgA);
SET orgBId = (SELECT c.Id
FROM Members as `m`
INNER JOIN Company as `c`
ON m.CompanyId = c.Id
WHERE m.Id = paramOrgB);
IF (orgAId = orgBId) THEN
set orgStatus = true;
ELSE
set orgStatus = false;
END IF;
select orgStatus as 'CompanyStatus';
END IF;
END
一个查询即可
SELECT count(distinct c.Id) > 1 as 'CompanyStatus'
FROM Members as `m`
INNER JOIN Company as `c` ON m.CompanyId = c.Id
WHERE m.Id IN (paramOrgA, paramOrgB)
更少的击键次数:
SELECT COUNT(DISTINCT CompanyId) > 1 as 'CompanyStatus'
FROM Members
WHERE Id IN (paramOrgA, paramOrgB)
找不到和我一样的问题希望大家能帮帮我。 我对我的 SP 有这个查询,我需要做的是根据用户给定的参数检查公司 ID 是否相同。
我有两个参数,paramOrgA 和 paramOrgB,它们将由用户提供。 我所做的是重复相同的查询并将返回值设置在两个变量中 orgAId 和 orgBId 然后使用 IF 语句比较值。
是否有另一种方法可以做到这一点,或者我应该说优化的方法来做到这一点?
下面是我写的查询。
BEGIN
declare orgAId int;
declare orgBId int;
declare orgStatus bool;
SET orgAId = (SELECT c.Id
FROM Members as `m`
INNER JOIN Company as `c`
ON m.CompanyId = c.Id
WHERE m.Id = paramOrgA);
SET orgBId = (SELECT c.Id
FROM Members as `m`
INNER JOIN Company as `c`
ON m.CompanyId = c.Id
WHERE m.Id = paramOrgB);
IF (orgAId = orgBId) THEN
set orgStatus = true;
ELSE
set orgStatus = false;
END IF;
select orgStatus as 'CompanyStatus';
END IF;
END
一个查询即可
SELECT count(distinct c.Id) > 1 as 'CompanyStatus'
FROM Members as `m`
INNER JOIN Company as `c` ON m.CompanyId = c.Id
WHERE m.Id IN (paramOrgA, paramOrgB)
更少的击键次数:
SELECT COUNT(DISTINCT CompanyId) > 1 as 'CompanyStatus'
FROM Members
WHERE Id IN (paramOrgA, paramOrgB)