Colorful
V2EX  ›  MySQL

mysql 多字段查询问题

By Colorful at 2020 年 7 月 5 日 · 3798 次点击

现在有 5 个字段要查询,固定的,如果单独的查询某一个字段,我会写,但是一次性查询 5 个字段就不太会了。 网上找了一些,但看得不是很懂

问题是这样的 select * from 表

a 字段,主要用来查城市名,可能会查询多个,字段的格式是这样的,深圳,广州(或者会有多个) b 字段,也是查询一个地名的,但是没有的时候,就查询所有 C 字段,用数字查询,查询 1 或者 2 这样的 D 字段,查询价格

如果写成一条 sql 语句 就不会了,请教下各位大神。 mysql 是小白一名,在学习中。

12 条回复  •  2020-07-17 22:02:27 +08:00
Colorful
   1
Colorful  
OP
   2020 年 7 月 5 日
a 字段,主要用来查城市名,可能会查询多个,字段的格式是这样的,深圳,广州(或者会有多个)
b 字段,也是查询一个地名的,但是没有的时候,就查询所有
C 字段,用数字查询,查询 1 或者 2 这样的
D 字段,查询价格
lgc007
   2
lgc007  
   2020 年 7 月 5 日   ❤️ 1
select a,b,c,d from tablename where 条件
Colorful
   3
Colorful  
OP
   2020 年 7 月 5 日
@lgc007 条件这块怎么写对应的字段啊?
Erroad
   4
Erroad  
   2020 年 7 月 5 日
你知道什么叫一条记录吗
turan12
   5
turan12  
   2020 年 7 月 5 日
select a,b,c,d from tablename where a='字符' and/or b=数字
turan12
   6
turan12  
   2020 年 7 月 5 日   ❤️ 1
抱歉,没看清题目。但我看了半天也没看懂楼主说的是啥意思 :p
no1xsyzy
   7
no1xsyzy  
   2020 年 7 月 5 日
a 可以拆开用多个 OR 拼
c d 看上去没有任何复杂的部分
b 的话,必须作两次查询(包括子查询),因为和 “全集” 有关,你不可能孤立看待某一行而知道这一查询参数如何处置,所以必然是两次查询,但子查询的话每次都得重新检查一遍 b0 是否在 b 里,严重效率浪费,所以建议还是先 select exists 验 b 是否存在,然后决定是否加上 b 这一条。
然后 AND 拼接

如果看不懂,就别勉强了。
UFc8704I4Bv63gy2
   8
UFc8704I4Bv63gy2  
   2020 年 7 月 5 日 via Android   ❤️ 1
v 站上都是什么人啊
Colorful
   9
Colorful  
OP
   2020 年 7 月 5 日
@Erroad 真不懂
ColoThor
   10
ColoThor  
   2020 年 7 月 6 日
标点符号是不是没用好
select * from 表 where a in (...) and ( b='' or b=#{b} ) and c=1 and d 条件
ColoThor
   11
ColoThor  
   2020 年 7 月 6 日
@ColoThor #10 select * from 表 where a in (...) and ( #{b}='' or b=#{b} ) and c=1 and d 条件
Colorful
   12
Colorful  
OP
   2020 年 7 月 17 日
@ColoThor 看懂了,333Q
› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
© 2026 V2EX · 39ms · 3.9.8.5