mysql 如何实现select ... where a.id *= b.id这种语句

WhiteBallon 2011-03-30 01:59:09
大家好,我有一个mssql 语句
select a.id from t1 a, t2 b where a.id *= b.id

我该怎样把它改写成mysql语句呢?

感激不尽!
...全文
306 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
WhiteBallon 2011-03-30
  • 打赏
  • 举报
回复
感谢各位的回复,微薄的分数不能表达不尽的感激 :)
ACMAIN_CHM 2011-03-30
  • 打赏
  • 举报
回复
这个 *= 是ORACLE的LEFT JOIN语句, 在以前SQL2003未定义之前,很多数据库都有自己的语法来实现外连接。在SQL2003之后,则已经定义了LEFT JOIN,RIGHT JOIN这些标准。

在MYSQL中采纳了SQL 2003标准。可以用
select a.id from t1 a left join t2 b on a.id = b.id


自ORACLE9以后,同样的语法也被ORACLE支持。
wwwwb 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 foozuu 的回复:]
嘿 是我解释错了 “当在b表中找不到a.id时”应该是 “当b表为空时”。
来个mssql的例子
SQL code
create table table_a(id int)

insert table_a(id) values(1)
insert table_a(id) values(2)
insert table_a(id) values(3)

create table ta……
[/Quote]
SELECT * FROM A LEFT JOIN B ON A.ID=B.ID WHERE B.ID IS NULL
rucypli 2011-03-30
  • 打赏
  • 举报
回复
我的本地竟然都执行报错,是08的运算符吗

百度了下

*= 是右连接 , 相当于 right outer join
=* 是左连接 , 相当于 left outer join


select a.id
from tb a right join tb b on a.id=b.id
WhiteBallon 2011-03-30
  • 打赏
  • 举报
回复
执行结果忘了贴。。
id
1
2
3
WhiteBallon 2011-03-30
  • 打赏
  • 举报
回复
嘿 是我解释错了 “当在b表中找不到a.id时”应该是 “当b表为空时”。
来个mssql的例子
create table table_a(id int)

insert table_a(id) values(1)
insert table_a(id) values(2)
insert table_a(id) values(3)

create table table_b(id int)

select a.id from table_a a, table_b b where a.id*=b.id
rucypli 2011-03-30
  • 打赏
  • 举报
回复
汗。。。真没见过*= 不够感觉你说的更像是不等于符号 !=
WhiteBallon 2011-03-30
  • 打赏
  • 举报
回复
to rucypli :
不是手误,*= 作用是 当在b表中找不到a.id时 ,select 的结果 是a.id 而不是空。
rucypli 2011-03-30
  • 打赏
  • 举报
回复
select a.id from t1 a, t2 b where a.id = b.id
直接原句就可以

*=这个符号是你手误吧

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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