在mysql中创建更好的查询所需的数据库指南

0vvn1miw  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(326)

我有一个包含如下所示数据的表

我创建这个查询是为了返回结果

  1. SELECT id,customer_name,job_number,
  2. IF(designer_name='des1',total_hrs, "") as des1,
  3. IF(designer_name='des2',total_hrs, "") as des2,
  4. IF(designer_name='des3',total_hrs, "") as des3,
  5. IF(designer_name='des4',total_hrs, "") as des4
  6. FROM practice.test;


如果有50个设计师,这将意味着我将不得不写如果语句多次,这将是不好的。
我想知道是否有更好的方法得到结果?
表代码:

  1. --
  2. -- Database: `practice`
  3. --
  4. -- --------------------------------------------------------
  5. --
  6. -- Table structure for table `test`
  7. --
  8. DROP TABLE IF EXISTS `test`;
  9. CREATE TABLE IF NOT EXISTS `test` (
  10. `id` int(11) NOT NULL AUTO_INCREMENT,
  11. `designer_id` int(11) NOT NULL,
  12. `designer_name` varchar(45) NOT NULL,
  13. `customer_name` varchar(45) NOT NULL,
  14. `job_number` varchar(45) NOT NULL,
  15. `total_hrs` varchar(45) NOT NULL,
  16. PRIMARY KEY (`id`)
  17. ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  18. --
  19. -- Dumping data for table `test`
  20. --
  21. INSERT INTO `test` (`id`, `designer_id`, `designer_name`, `customer_name`, `job_number`, `total_hrs`) VALUES
  22. (1, 1, 'des1', 'aa', 'j101', '11'),
  23. (2, 1, 'des1', 'bb', 'j102', '8'),
  24. (3, 2, 'des2', 'cc', 'j103', '2'),
  25. (4, 2, 'des2', 'dd', 'j104', '2'),
  26. (5, 2, 'des2', 'ee', 'j105', '5'),
  27. (6, 3, 'des3', 'ff', 'j106', '13'),
  28. (7, 3, 'des3', 'gg', 'j107', '32'),
  29. (8, 3, 'des3', 'ii', 'j108', '4'),
  30. (9, 3, 'des3', 'kk', 'j109', '3'),
  31. (10, 3, 'des3', 'll', 'j110', '4'),
  32. (11, 4, 'des4', 'mm', 'j111', '1'),
  33. (12, 4, 'des4', 'nn', 'j112', '6');
svdrlsy4

svdrlsy41#

你想达到什么目的?如果是总小时数,试试看

  1. SELECT designer_name, sum(total_hrs) FROM test GROUP BY designer_id
9ceoxa92

9ceoxa922#

这是毫无意义的。我不认为你真的需要这个。做简单请求的问题是什么

  1. SELECT id, customer_name, job_number, designer_name, total_hrs
  2. FROM practice.test

你能解释一下,为什么你需要这样的结果吗。可能,代码中有错误的逻辑,什么将处理结果。

相关问题