我正在努力弄清楚如何在不对mysql进行两次调用的情况下从一个表中检查两件事情。
我有一张<form name="htmlform" method="post" action="form_process2.php">
<input type="checkbox" name="services[]" value="Ecomtek" /> Ecomtek<br />
<input type="checkbox" name="services[]" value="E-Payroll" /> E-Payroll<br />
<input type="checkbox" name="services[]" value="Humana" /> Humana<br />
<input type="checkbox" name="services[]" value="John Conti" /> John Conti<br />
<input type="checkbox" name="services[]" value="Kentucky RX Card" /> Kentucky RX Card<br />
<input type="checkbox" name="services[]" value="Lifelock" /> Lifelock<br />
<input type="checkbox" name="services[]" value="Logans" /> Logan's<br />
<input type="checkbox" name="services[]" value="Norton Healthcare" /> Norton Healthcare<br />
<input type="checkbox" name="services[]" value="Office Depot" /> Office Depot<br />
<input type="checkbox" name="services[]" value="ProWaste" /> ProWaste<br />
<input type="checkbox" name="services[]" value="Thorntons" /> Thorntons<br />
<label for="firstname">*FirstName</label>
<input type="text" name="firstname" maxlength="150" size="50" class="formbox">
<label for="lastname">*Last Name</label>
<input type="text" name="lastname" maxlength="150" size="50" class="formbox">
<label for="company">*Company</label>
<input type="text" name="company" maxlength="150" size="50" class="form box">
<label for="email">*Email Address</label>
<input type="text" name="email" maxlength="180" size="50" class="form box">
</form>
表。我想测试Members
列中是否存在某个值,以及MemberID
列中是否存在某个值。 <{1}}和PhoneNumber
都已编入索引。
但是我正在尝试的语法有问题。例如,每个
MemberID
和
PhoneNumber
的工作原理。为什么他们不能以某种方式结合起来,比如
SELECT COUNT(1) AS IDExists FROM Members WHERE MemberID = '999999999999' LIMIT 1
或许,因为我只关心这个值是否出现零次,或者根本不关心
SELECT COUNT(1) AS PhoneExists FROM Members WHERE PhoneNumber = '5555555555' LIMIT 1
但是,不幸的是,即使是我的一个查询,这种语法也有问题。
有关如何完成此任务的任何建议?
答案 0 :(得分:2)
您需要条件SUM
SELECT
SUM( CASE
WHEN PhoneNumber = '5555555555' THEN 1
ELSE 0
END) PhoneExists,
SUM( CASE
WHEN MemberID = '999999999999' THEN 1
ELSE 0
END) IDExists
FROM Members
答案 1 :(得分:1)
您可以将两个工作查询组合在一起:
select a.IDExists, b.PhoneExists
from (SELECT COUNT(1) AS IDExists FROM Members WHERE MemberID = '999999999999' LIMIT 1) a,
(SELECT COUNT(1) AS PhoneExists FROM Members WHERE PhoneNumber = '5555555555' LIMIT 1) b
虽然查询将两个结果与笛卡尔积相结合,但保证每个结果只有一行,这不会有问题。
我不确定这张桌子有多大,它有多少种索引。如果表很大,那么您可能分别在列MemberID
和PhoneNumber
上有索引,那么上面的查询将快速返回结果。