【问题标题】:Select specific rows and columns from an SQL database从 SQL 数据库中选择特定的行和列
【发布时间】:2016-04-17 22:04:11
【问题描述】:

是否可以检索SQL query 中特定行的特定列?

假设我从名为my_tableSQL 表中选择名称为: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 并将其替换为 *
  • 行没有名字顺便说一句。

标签: mysql sql


【解决方案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 语句。最简单的版本具有以下子句)

      1. 选择包含感兴趣数据的表(FROM 子句)。如果我们想要电话列表,我们可以查询 whitepages 表。
      2. 识别包含感兴趣数据的行(WHERE 子句)。这是通过对列值设置条件来完成的(没有行听者或行名)。我们想要姓氏为“海明威”的人的电话号码这里姓氏将是表中的一列,而不是行名。
      3. 选择我们要检索的数据列(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/

        【讨论】:

          猜你喜欢
          • 2021-07-09
          • 1970-01-01
          • 2011-10-03
          • 1970-01-01
          • 2013-06-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-20
          相关资源
          最近更新 更多