Php 如何使用带可选值的多个条件从Mysql表中获取值
我需要使用多个条件从MYSQL表中检索所有数据,但这里有些输入是可选的。我在下面解释我的表格 db_考试: 我正在传递下面的输入以获取所有数据Php 如何使用带可选值的多个条件从Mysql表中获取值,php,mysql,Php,Mysql,我需要使用多个条件从MYSQL表中检索所有数据,但这里有些输入是可选的。我在下面解释我的表格 db_考试: 我正在传递下面的输入以获取所有数据 reg_no=12 zone=3 center=AB sub_code=2 从上面的输入中,一些是可选的,这意味着列中心和子_code的值可能存在或可能为空。在这里,我需要使用上述条件和列center=AB或center='和sub_code=2或sub_code=''的值进行查询以获取所有数据。但前2个条件是必需的。使用下面的查询 select *
reg_no=12
zone=3
center=AB
sub_code=2
从上面的输入中,一些是可选的,这意味着列中心和子_code
的值可能存在或可能为空。在这里,我需要使用上述条件和列center=AB或center='
和sub_code=2或sub_code=''
的值进行查询以获取所有数据。但前2个条件是必需的。使用下面的查询
select * from db_exam where reg_no=12 and zone=3 and (center=AB or center='') and (sub_code=2 or sub_code='')
用户在查询中的位置,如下所示。 传递输入值和默认值,如空字符串“”。
SELECT *
FROM db_exam
WHERE (reg_no = <number> AND zone= <number> AND center IN (<input>, '') AND sub_code IN (<input>, ''));
选择*
来自db_考试
其中(reg_no=和zone=和中心位于(,'')和子代码位于(,'');
如果我错了,请纠正我。试试这个:
SELECT
t1.id
,t1.name
,t1.reg_no
,t1.zone
,t1.college
,t2.center
,t3.sub_code
FROM db_exam t1
INNER JOIN db_exam t2
ON t2.id=t1.id
AND t2.center='AB'
INNER JOIN db_exam t3
ON t3.id=t1.id
AND t3.sub_code=2;
使用内部联接和外部联接,这些联接允许您仅在两侧匹配时有条件地选择数据。这不起作用…查询仅在所有内容都匹配时返回某些内容…当匹配有效时,您需要使用左联接和右联接来选择部分。您可以直接输入可能不正确的输入值。
SELECT
t1.id
,t1.name
,t1.reg_no
,t1.zone
,t1.college
,t2.center
,t3.sub_code
FROM db_exam t1
INNER JOIN db_exam t2
ON t2.id=t1.id
AND t2.center='AB'
INNER JOIN db_exam t3
ON t3.id=t1.id
AND t3.sub_code=2;