sql查询的技巧

sql grop by的本质理解 

 

可以发现 group by 是取了 order by 结果的首行! 

非本表字段的筛选查询

 查询A表的结果,但筛选条件是B表的筛选条件,其中A表的主键是B表的外键,表结构如下:

A表:

CREATE TABLE `A` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
)

B表:

CREATE TABLE `B` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `address` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL COMMENT 'A表的主键',
  PRIMARY KEY (`id`)
)

A: B: 

 内连接查询为:

 

 其中,exists表示:A中存在的id至少在B中user_id中出现一次,应用场景为:

查询A表,但筛选条件有B表的字段,如:查询居住在四川成都的用户:

SELECT	* FROM	A 
WHERE
	EXISTS (SELECT * 	FROM	B WHERE	A.id = B.user_id and  B.address="四川成都")

 知识点1:

mysql默认不区分大小写,这意味着表名、列名或者使用字符串时,大小写不会影响查询的结果,但如果你需要在 MySQL 中区分大小写,可以在创建表时指定字符集为区分大小写的字符集,例如 utf8_bin,如下:

 知识点2:

mysql中 join和 inner join 有区别吗?没区别,记忆为 mysql中可以省略写inner

猜你喜欢

转载自blog.csdn.net/u013372493/article/details/125747212