mysql 多字段查询问题

2020-07-05 11:56:13 +08:00
 Colorful

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

问题是这样的 select * from 表

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

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

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

如果看不懂,就别勉强了。
weiqk
2020-07-05 14:09:18 +08:00
v 站上都是什么人啊
Colorful
2020-07-05 22:30:56 +08:00
@Erroad 真不懂
ColoThor
2020-07-06 11:25:44 +08:00
标点符号是不是没用好
select * from 表 where a in (...) and ( b='' or b=#{b} ) and c=1 and d 条件
ColoThor
2020-07-06 11:27:25 +08:00
@ColoThor #10 select * from 表 where a in (...) and ( #{b}='' or b=#{b} ) and c=1 and d 条件
Colorful
2020-07-17 22:02:27 +08:00
@ColoThor 看懂了,333Q

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/687270

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX