求一mysql解决方案

tod204 2005-05-23 11:21:11
表footer
footer_id int(11) UNSIGNED No 0
footer_no varchar(80) latin1_general_ci No
name varchar(60) latin1_general_ci No
status enum('A', 'D', 'L') latin1_general_ci

PRIMARY PRIMARY 12 footer_id

表cons
cons_id int(11) UNSIGNED No 0
footer_id int(11) UNSIGNED No 0
cons_no varchar(120) latin1_general_ci No
date_start date No 0000-00-00


PRIMARY PRIMARY 3 cons_id
footer_id INDEX
现在求一语句,所有在表footer(footer_id)但是不在表cons(footer_id)中的footer_id
...全文
188 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fibona 2005-05-24
  • 打赏
  • 举报
回复
楼上的是对了,我开始写急了,呵呵
xuzuning 2005-05-24
  • 打赏
  • 举报
回复
这个问题似乎不需要讨论的,手册中就有现成的例子
zhutimy 2005-05-23
  • 打赏
  • 举报
回复
用 LEFT JOIN 试试

SELECT footer.footer_id FROM footer LEFT JOIN cons ON footer.footer_id=cons.footer_id WHERE cons.footer_id IS NULL;

希望没打错字,我在我现有的表里能行,只是结构有点不同.
keaizhong 2005-05-23
  • 打赏
  • 举报
回复
mysql:
select a.footer_id from footer a, cons b where a.footer_id <> b.footer_id

这样子不知道行不行?楼主试试看。
helloyou0 2005-05-23
  • 打赏
  • 举报
回复
不过楼上的写的不对,应该是
select footer.footer_id from footer where not exists
(select footerid from cons where footerid=footer.footer_id)
helloyou0 2005-05-23
  • 打赏
  • 举报
回复
不知道你们说的那个2楼到底是哪个?
用<>那个是不行的。
left join / not exists / not in 都是可以的,以前有过一样的帖子
Fibona 2005-05-23
  • 打赏
  • 举报
回复
2楼的虽然算法不好,但确实可以得到正确的结果

select a.footer_id from footer a where not exists (select footerid from cons)
不知道写对了没有,没有测试
zhutimy 2005-05-23
  • 打赏
  • 举报
回复
bflovesnow()
晕S,2 楼的写法毫无意义的啊,差不多是一个 迪卡尔 乘积的结果啊。
----------------
我也不喜欢用LEFT JION,效率不好.可毕竟可以先把问题解决掉.
我也想知道别的好方法.waiting....
  • 打赏
  • 举报
回复
left join其实就是left outer join ????
  • 打赏
  • 举报
回复
2楼的也没错啊,能得到结果就成啦~~~~~
bflovesnow 2005-05-23
  • 打赏
  • 举报
回复
晕S,2 楼的写法毫无意义的啊,差不多是一个 迪卡尔 乘积的结果啊。
helloyou0 2005-05-23
  • 打赏
  • 举报
回复
还可以用not in 和not exists ,如果是4.1版本的mysql
tod204 2005-05-23
  • 打赏
  • 举报
回复
2楼的可以
blueoxygen 2005-05-23
  • 打赏
  • 举报
回复
2楼的就行吧

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧