sql 查询 一个表中某几列数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 查询 一个表中某几列数据相关的知识,希望对你有一定的参考价值。
例如 select * from test1 where id=‘2’and name=全部 and age=全部
全部代表所有数据 应该怎么写?
sql查询一个表中某几列数据语法:
1、SELECT 列名称1、列名称2.....列名称n FROM 表名称 WHERE 列 运算符 值;
2、SELECT * from 表名称 where 列 运算符 值(列 运算符 值,这个可以是多个,中间用and隔开)。
解析:使用sql查询时,作为查询的筛选限制条件,只需要对有限制要求的字段使用where进行限制即可,无需对非限制要求的字段进行特别限制。
所以你的语句可以修改为"select * from test1 where id=‘2’;"就可以了。其中,你原语句中的name=全部和age=全部,属于多余的,如果不对name和age字段做任何限制的话,sql本身就是会查询全部name和age,而无需你另外加设条件。
再比如你这样写:“select * from test1;”在不加任何where条件的情况下,这个sql查询本身就是查询全部数据。而当加入id='2'之后,就限制了只能返回id值是2的某一条或者多条数据。
扩展资料:
在SQL查询表中数据时,最常用的就是有条件查询,这就需要经常用到where子句对查询的内容做某些条件限制,整理部分常用的查询条件语句的使用,如下:
通过几个例子来加深一下对上表各查询条件使用的理解:
1、查询计算机科学系全体学生的名单;
SELECT Sname FROM StudentWHERE Sdept='CS';
2、查询所有年龄在20岁以下的学生姓名及其年龄;
SELECT Sname,Sage FROM StudentWHERE Sage<20;
3、查询考试成绩不合格的学生的学号;
SELECT DISTINCT Sno FROM SCWHERE Grade<60;
4、查询年龄在20~23岁之间的学生的姓名、系别和年龄;
SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23;
5、查询年龄在20~23岁之间的学生的姓名、系别和年龄;
SELECT Sname,Sdept,Sage FROM StudentWHERE Sage NOT BETWEEN 20 AND 23;
6、查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名、系别和年龄。
SELECT Sname,Ssex FROM Student WHERE Sdept IN('CS','MA','IS')。
参考技术A所有数据可以用到sql中的通配符%,用来进行模糊查询。
用法是 select * from test1 where id=‘2’and name like '%' and age like '%',表示从test1表中查询id为2,name和age任意的数据。
1、为了对比前后查询数据,先查询表test1中的所有数据,select * from test1,如下图所示。
2、再用通配符%进行模糊查询,select * from test1 where id='2' and name like '%' and age like '%',可以看到筛选后后的结果除去了id为1的数据。
扩展资料:
sql语言中还有其它的通配符,例如“_”,它表示仅代替一个字符,从"Persons" 表中选取名字的第一个字符之后是 "eorge" 的人,SELECT * FROM 表名 WHERE 列名LIKE '_eorge'。
通配符[charlist]代表字符列中的任何单一字符,从 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人,SELECT * FROM Persons WHERE City LIKE '[ALN]%'。
参考技术B 查询表格中的指定列数据,是select 语句其中一种语法即:select columna,columnb from table
如表格table有列 a,b,c,d
1、select * from table = select a,b,c,d from table 即显示表格式所以列
2、select a,b from table 即指定显示表格式a,b两列 参考技术C WHERE 条件语句用于筛选记录,如果是一个获得全部记录集的条件是没有必要增加的,增加了也是增加查询负担。
简洁的写法就是:SELECT * FROM test1 WHERE id = '2'
搜索的条件使用 ' 引用时,表示条件为字符串,有很多回答者贸然的认为是主键我想是错误的。
问题的另一种理解方法是显示结果记录集中的某几列。
那么正确的SQL写法是:SELECT name, age FROM test1 WHERE id = '2'
如果需要取出id,SQL写法是:SELECT id, name, age FROM test1 WHERE id = '2' 参考技术D select * from test1 where id=‘2’
难道这样不能把所有的数据读取出来么?
你既然要全部数据就应该不添加搜索条件.
添加搜索条件只是为了减少输出的数据信息.
你既然要全部信息就不需要添加搜索条件.
Spark dataframe 中某几列合并成vector或拆分
使用Spark SQL在对数据进行处理的过程中,可能会遇到对一列数据拆分为多列,或者把多列数据合并为一列。这里记录一下目前想到的对DataFrame列数据进行合并和拆分的几种方法。
1 DataFrame列数据的合并
例如:我们有如下数据,想要将三列数据合并为一列,并以“,”分割
±—±–±----------+
|name|age| phone|
±—±–±----------+
|Ming| 20|15552211521|
|hong| 19|13287994007|
| zhi| 21|15552211523|
±—±–±----------+
1.1 使用map方法重写
使用map方法重写就是将DataFrame使用map取值之后,然后使用toSeq方法转成Seq格式,最后使用Seq的foldLeft方法拼接数据,并返回,如下所示:
//方法1:利用map重写
val separator = “,”
df.map( _.toSeq.foldLeft(“”)( _ + separator + _).substring(1)).show()
/**
* +-------------------+
* | value|
* +-------------------+
* |Ming,20,15552211521|
* |hong,19,13287994007|
* | zhi,21,15552211523|
* +-------------------+
*/
1.2 使用内置函数concat_ws
合并多列数据也可以使用SparkSQL的内置函数concat_ws()
//方法2: 使用内置函数 concat_ws
import org.apache.spark.sql.functions._
df.select(concat_ws(separator, $"name", $"age", $"phone").cast(StringType).as("value")).show()
/**
* +-------------------+
* | value|
* +-------------------+
* |Ming,20,15552211521|
* |hong,19,13287994007|
* | zhi,21,15552211523|
* +-------------------+
*/
1.3 使用自定义UDF函数
自己编写UDF函数,实现多列合并
//方法3:使用自定义UDF函数
// 编写udf函数
def mergeCols(row: Row): String =
row.toSeq.foldLeft("")(_ + separator + _).substring(1)
val mergeColsUDF = udf(mergeCols _)
df.select(mergeColsUDF(struct($"name", $"age", $"phone")).as("value")).show()
原文链接:https://blog.csdn.net/shirukai/article/details/82665733
1.4 使用VectorAssembler
2 拆永久用split
以上是关于sql 查询 一个表中某几列数据的主要内容,如果未能解决你的问题,请参考以下文章
Spark dataframe 中某几列合并成vector或拆分
Spark dataframe 中某几列合并成vector或拆分