如题:如何用一条SQL语句按输入的参数进行判断执行查询数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如题:如何用一条SQL语句按输入的参数进行判断执行查询数据相关的知识,希望对你有一定的参考价值。

例如有个ID参数~如何用一条SQL语句查询两个表的数据!~不用分开查询~可用合并语句~问题实例如下~
select * form A,B where (A.id=ID or B.id=ID) ~~~这样会查出两表的数据~~如A表有字段 ID NAME SEX B表有字段 ID NAME OLD 如何按ID查询两表中的单表对应的数据~如ID为3时就查A表中的数据~B表中ID没有3的~对应的那个字段就显示空~而当ID为4时就查询B表中的数据~A表中没有的就显示空~且按ID查询时只显示出一条对应该表的记录~~
简单来说就像是IF结构一样~按ID值智能判断查询表A还是表B~但是只能用一条SQL语句~~

补充详细点~~同用一个ID参数~例如同用3~~然后如果A表中有3就列出A表中NAME 和 SEX的值~~B表中对应的NAME值为空~~如果B表中有3则列出B表中NAME的值~A表中的NAME和SEX值为空~

参考技术A select a.ID,a.name,sex,b.ID,b.name,old from A full join B on a.ID=b,ID order by a.ID;
按下列方式试试。
select a.ID,a.name,sex,b.ID,b.name,old from A full join B on a.ID=b,ID
where (a.name is null and a.sex is null and b.name is not null) or
(a.name is not null and a.sex is not null and b.name is null)
order by a.ID;追问

补充详细点~~A,B两表同用一个ID参数~例如同用3~~然后如果A表中有3就列出A表中NAME 和 SEX的值~~B表中ID没有3的对应的NAME值为空~~如果B表中有3则列出B表中NAME的值~A表中的没有3的NAME和SEX值为空~

追答

上述语句的意思:
1、full join B on a.ID=b,ID 保证两个表的记录不管ID等于不等全部选中。
2、(a.name is null and a.sex is null and b.name is not null) A的两个字段空时,如果B不空则选中;如果B表的值空,则不选中。
3、 (a.name is not null and a.sex is not null and b.name is null) A表两个字段不空时,如果B表空则选中;如果B值不空,则不选中。
4、A和B两个表都有值,则不选中。

追问

我把我的意思这样表达吧~用一条SQL语句实现这个功能~~
if ID=3 then
select a.name,a.sex form A where id=3
'如果A表中无ID为3的记录
else
select b.name from B where id=3
end if
就是这么一个意思~

追答

你把两个原表和结果表贴出来就容易明白了。

参考技术B declare @strsql nvarchar(1024),@ID int
set @strsql=''
if(@ID=3)
begin
select * from A
end
else if(@ID=4)
begin
select * from B
end
exec(@strsql)
不知道这样算不算一句

如何用SQL语句来判断查询结果为空?

首先我在输入框中输入了帐号和密码 但是 不一定是数据库中存在的 那么 我直接用
select * from 表 where username=我输入的帐号 and userpass=我输入的密码 这样的话如果我查询结果为空 不就确定了我输入的帐号或密码错误嘛 如果结果不为空 就进去了
这个怎么来实现呢???

select count(*) from 表 where username=我输入的帐号 and userpass=我输入的密码 用count(*)来实现,较简单一些,直接取到结果,如果结果>0,就证明账号和密码正确服,如果=0则错误. 参考技术A $result = mysql_query( "查询代码" );
if ( mysql_num_rows( $result ) )
echo "数据已存在!";
else
echo "数据库尚未存入这条记录。。。"
参考技术B 我只知道用IF语句可以吧。呵呵。

以上是关于如题:如何用一条SQL语句按输入的参数进行判断执行查询数据的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL如何判断如果某字段有重复就取其中一条?

Centos6.5中如何用sqlite3命令打开’.db’后缀的数据库执行sql

oracle db 如何用一条sql查询2个时间之间的工作时间间隔

如何用sqlmap写入文件步骤

如何用sql语句将一列多行数据拼接逗号隔开形成一条记录

如何用参数控制执行不同的sql语句(在线等答案