现在有 5 个字段要查询,固定的,如果单独的查询某一个字段,我会写,但是一次性查询 5 个字段就不太会了。 网上找了一些,但看得不是很懂
问题是这样的 select * from 表
a 字段,主要用来查城市名,可能会查询多个,字段的格式是这样的,深圳,广州(或者会有多个) b 字段,也是查询一个地名的,但是没有的时候,就查询所有 C 字段,用数字查询,查询 1 或者 2 这样的 D 字段,查询价格
如果写成一条 sql 语句 就不会了,请教下各位大神。 mysql 是小白一名,在学习中。
1
Colorful OP a 字段,主要用来查城市名,可能会查询多个,字段的格式是这样的,深圳,广州(或者会有多个)
b 字段,也是查询一个地名的,但是没有的时候,就查询所有 C 字段,用数字查询,查询 1 或者 2 这样的 D 字段,查询价格 |
2
lgc007 2020-07-05 12:11:59 +08:00 1
select a,b,c,d from tablename where 条件
|
4
Erroad 2020-07-05 13:19:53 +08:00
你知道什么叫一条记录吗
|
5
turan12 2020-07-05 13:46:20 +08:00
select a,b,c,d from tablename where a='字符' and/or b=数字
|
6
turan12 2020-07-05 13:48:23 +08:00 1
抱歉,没看清题目。但我看了半天也没看懂楼主说的是啥意思 :p
|
7
no1xsyzy 2020-07-05 14:06:50 +08:00
a 可以拆开用多个 OR 拼
c d 看上去没有任何复杂的部分 b 的话,必须作两次查询(包括子查询),因为和 “全集” 有关,你不可能孤立看待某一行而知道这一查询参数如何处置,所以必然是两次查询,但子查询的话每次都得重新检查一遍 b0 是否在 b 里,严重效率浪费,所以建议还是先 select exists 验 b 是否存在,然后决定是否加上 b 这一条。 然后 AND 拼接 如果看不懂,就别勉强了。 |
8
UFc8704I4Bv63gy2 2020-07-05 14:09:18 +08:00 via Android 1
v 站上都是什么人啊
|
10
ColoThor 2020-07-06 11:25:44 +08:00
标点符号是不是没用好
select * from 表 where a in (...) and ( b='' or b=#{b} ) and c=1 and d 条件 |