从 SQL 数据库中选择特定的行和列
Posted
技术标签:
【中文标题】从 SQL 数据库中选择特定的行和列【英文标题】:Select specific rows and columns from an SQL database 【发布时间】:2016-04-17 22:04:11 【问题描述】:是否可以检索SQL query
中特定行的特定列?
假设我从名为my_table
的SQL
表中选择名称为:a、b 的行,使用此查询文本:
"select * from my_table where row_names in ('a', 'b') order by row_names"
如何修改此查询文本以仅选择第 2、12、22、32、42 列而不是所有 1000 列?
【问题讨论】:
找出列 2,12,22,32,42 的名称并替换例如 col2,col12...col42 并将其替换为 * 行没有名字顺便说一句。 【参考方案1】:将通配符*
替换为您要检索的列名。
但是请阅读有关 SQL 标准的文档。您不太可能需要一个表中的 1.000 列。
【讨论】:
【参考方案2】:尝试阅读 sql,因为它确实做到了它所说的
select [column name 1, column name 2]
from [table name]
where [column name 3] in ('column value 1', 'column value 2')
order by [column name 3]
请选择“列名1”和“列名2”的值 从表中称为“表名”的行 其中这些行在名为“列名 3”的列中的值等于“列值 1”和“列值 2”
【讨论】:
【参考方案3】:是的。 SQL 用于从所需的行中选择所需的列。除非您定义了名为 row_names 的列(通常不这样做),否则数据行没有 row_names。在基本层面上,从 RDBMS 检索数据是通过如下构造的 SQL 语句:(这将是一个 SELECT 语句。最简单的版本具有以下子句)
-
选择包含感兴趣数据的表(FROM 子句)。如果我们想要电话列表,我们可以查询 whitepages 表。
识别包含感兴趣数据的行(WHERE 子句)。这是通过对列值设置条件来完成的(没有行听者或行名)。我们想要姓氏为“海明威”的人的电话号码这里姓氏将是表中的一列,而不是行名。
选择我们要检索的数据列(SELECT 子句)。我们需要名字、姓氏和电话号码。
综合起来,我们可能有:
SELECT
first_name,
last_name,
phone_number
FROM
WhitePages
WHERE
(last_name = "Hemingway")
在您的情况下,SELECT 语句将类似于:
SELECT
<name of column 2>,
<name of column 12>,
<name of column 22>,
<name of column 32>,
<name of column 42>
FROM
my_table
WHERE
(<some_column_name> IN ('a', 'b'))
AND (<some_other_column_name> = <some_number>)
AND (<yet_another_column_name> = "<some_text>")
ORDER BY
<a_selected_column>,
<another_selected_column>
如果您要定期使用数据库,我建议您多学习一些关于 SQL 的知识,因为您很难在 SO 或其他网站上解决问题。
虽然您提到的 1000 列可能有些夸张,但 SQL 表通常不会有数百列。考虑让经验丰富的团队成员设计您的表和 SQL。
【讨论】:
【参考方案4】:2 小鬼点 1. 单表1000列不利于RDBMS及其高度非规范化的表。 2. 行没有名字。
现在,如果您知道列的名称,请使用以下内容:
"select column_1,column_2 from my_table where primary_key_column in ('1','2');"
这里的 column_1,column_2 是您想要的列的名称。 primary_key_column 来唯一地定义您的行并在括号中定义您需要检索的所有主键。
如果您只知道列号,请使用以下方法检索列名:
"SELECT Column_name FROM user_tab_columns where table_name = 'MY_TABLE' and Column_id in (1,2,5);"
希望这会有所帮助。
供进一步参考 http://www.w3schools.com/sql/
【讨论】:
以上是关于从 SQL 数据库中选择特定的行和列的主要内容,如果未能解决你的问题,请参考以下文章