关于mysql多条件查询的疑问 25

新手碰到一个疑问?sql是结构化查询语言,唯一的判断casewhen还只能在select中用来显示某些达到条件的特定输出。假如,现在我有两张表user(id,...),a... 新手碰到一个疑问?sql是结构化查询语言,唯一的判断case when还只能在select中用来显示某些达到条件的特定输出。
假如,现在我有两张表user(id,...),address(id,uid,host,...),address.uid的外键是user.id,host只有1或0。我要查询user和address的全部信息且满足如下条件:host为1时就输出这条address行与user相应的信息,当host没有1时就输出address.id中最大的那一行。
本人写的如下:
select * from user u,address a
where u.id = a.uid
and (a.host=1 or a.id = (select max(ad.id) from address ad where u.id=ad.uid));
这样会输出两条,一条host=1,一条host=0且address.id最大。
新人疑惑是我对sql理解不够,还是sql无法通过sql语句达到这样的查询?
展开
 我来答
匿名用户
2015-08-11
展开全部
如果你的host中有1,且他的address。id不是最大,就会出现这样的情况了
更多追问追答
追问
恩。我知道,我想知道能否通过sql达到我想要的结果。host=1时,输出host这条信息;没有host=1时,输出最大的id那条信息。
追答
select * from user u,address a
where u.id = a.uid
and (a.host=1 or a.id = (select max(ad.id) from address ad ) and (select count(*) from address where host=1)=0);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式