select table1.*
from table1 left join table2
on table1.id = table2.id
where table2.id =1;
from table1 left join table2
on table1.id = table2.id
where table2.id =1;
解决方案 »
- 非常难以理解的MYSQL问题!
- mysql 1064错误
- 请教关于mysql启动问题
- 请教关于mysql中xml文件的上传!
- 求一句:相同代码的记录中,日期离现在时间最近的一条记录
- postgresql:怎么在一个function中再加一个内部函数?
- MYSQL 和SQL SERVER的SQL语法比较
- MYSQL 写远大于读的情况数据库压力缓解
- 根据某一字段排序,同时让该行跟着该字段改变位置,怎么做?求助
- MySQL批量插入的问题
- 在局域网内的mysql server,我明明已经给root用户(其他用户也一样)增加了密码了的,
- Table 'mysql.proc' doesn't exist 这是什么错?
from table1 left join table2
on table1.id = table2.id
where table2.id is null
to xayzmb(行者):
实现IN (SELECT table1ID FROM table2 WHERE ID=1)才是这样,但现实
Not IN (SELECT table1ID FROM table2 WHERE ID=1)应该是错误吧!
to tomboy0(小波波):
当table2.id对应table1.id的关系是一对一时朋友的语句是正确的,但当
当table2.id不是主键或唯一索引,对应table1.id的关系是一对多时,就不行了。
即table2.id为1时,对应table1ID为1,2,3,4,
table1表记录为:
id
1
2
3
4
即table2列记录为:
id,table1ID
1,1
1,2
1,3
2,1
2,2
2,3
2,4
执行:
SELECT table1.* FROM table1 WHERE table1.ID NOT IN (SELECT table1ID FROM table2 WHERE ID=1)
应该得
id,
4
如果执行tomboy0(小波波)的SQL语句,应该得:
id
(空)
from table1 left join table2
on table1.id = table2.table1ID and table2.id=1
where table2.id is null
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
+----+
4 rows in set (0.00 sec)mysql> select * from table2;
+----+----------+
| id | table1ID |
+----+----------+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |
| 2 | 3 |
| 2 | 4 |
+----+----------+
7 rows in set (0.00 sec)mysql> select table1.*
-> from table1 left join table2
-> on table1.id = table2.table1ID and table2.id=1
-> where table2.id is null;
+----+
| id |
+----+
| 4 |
+----+
1 row in set (0.00 sec)
对了,朋友!感谢你!我没有去细想这个问题。感谢了!:)