【问题标题】:Select distinct values of few columns and multiple values of few columns选择几列的不同值和几列的多个值
【发布时间】:2019-10-03 22:00:46
【问题描述】:

我必须沿着同一张表的几列的多个值选择几列的不同值。我的桌子是这样的

当像这样显示此表时,我想选择 first_name 和 last_name 列的不同值以及主题 cloumn 的所有值

是否可以显示名字和姓氏的不同值?

Select DISTINCT `first_name` , `last_name` from table1

【问题讨论】:

  • 考虑在您的应用程序代码(例如:PHP)中处理数据显示相关要求。 SQL不适合同样的
  • 如何从同一个表中选择主题的值
  • 只需运行:SELECT first_name, last_name, subject from table1,然后根据您的显示需要循环输入您的 PHP 代码以获取俱乐部数据
  • 在 sql 中有什么方法可以做,因为我添加了几个 cloumns 的值
  • SELECT first_name, last_name, GROUP_CONCAT(subject) FROM table1 GROUP BY first_name, last_name; 怎么样?在这里查看 -> db-fiddle.com/#&togetherjs=b3BtzRqmfq

标签: mysql sql


【解决方案1】:

我已经尝试使用 partition by 子句来处理给定的场景。请检查下面的示例代码 sn-p。它有效。

CREATE TABLE #Student                                                                  
(                                                                             
     first_name VARCHAR(100),                                                  
     last_name VARCHAR(100),                                                   
     [subject] VARCHAR(100)                                                            
)

INSERT INTO #Student (first_name, last_name, [subject]) VALUES ('a','b','maths')  
INSERT INTO #Student (first_name, last_name, [subject]) VALUES ('a','b','science')
INSERT INTO #Student (first_name, last_name, [subject]) VALUES ('e','f','bio')
INSERT INTO #Student (first_name, last_name, [subject]) VALUES ('e','f','eng')


SELECT CASE WHEN reportTbl.RowNo = 1 THEN first_name ELSE '' END as first_name,   
CASE WHEN reportTbl.RowNo = 1 THEN last_name ELSE '' END as last_name, 
[Subject]  FROM 
(
     SELECT first_name, last_name, [Subject],
     ROW_NUMBER() OVER (PARTITION BY first_name, last_name  ORDER BY subject) RowNo 
     FROM #Student
) 
reportTbl

添加 RowNo 列与 partition by 子句后的实际表

下面是查询的最终输出

【讨论】:

    猜你喜欢
    • 2013-10-02
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多