首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当多个时间列时mySQL的情况

当多个时间列时mySQL的情况
EN

Stack Overflow用户
提问于 2014-02-04 12:36:48
回答 1查看 97关注 0票数 0

我有一张13栏的桌子。

身份证,

职称,keyword1,keyword2,keyword3,jobtitle2,keyword12,keyword22,keyword23,jobtitle3,keyword13,keyword23,keyword33。

我正在努力实现以下目标。当职称得到一个特定的值(例如程序员)时,我想要keyword1、keyword2和keyword3的值。

当jobtitle2得到一个特定的值(例如程序员)时,我想要keyword12、keyword22和keyword23的值。

当jobtitle3得到一个特定的值(例如程序员)时,我想要keyword13、keyword23和keyword33的值。

所有三个、两个或仅仅一个职位都有价值。

我得到了以下mySQL查询

代码语言:javascript
运行
复制
    SELECT distinct CASE
          WHEN jobtitle = "Programmer" THEN keyword1
          WHEN jobtitle = "Programmer" THEN keyword2
          WHEN jobtitle = "Programmer" THEN keyword3

       END as col_1,
       CASE
          WHEN jobtitle2 = "Programmer" THEN keyword12
          WHEN jobtitle2 = "Programmer" THEN keyword22
          WHEN jobtitle2 = "Programmer" THEN keyword32

       END as col_2,
       CASE
          WHEN jobtitle3 = "Programmer" THEN keyword13
          WHEN jobtitle3 = "Programmer" THEN keyword23
          WHEN jobtitle3 = "Programmer" THEN keyword33

       END as col_3

  FROM tbl_keywords

据我所知。就像当jobtitle=“程序员”然后keyword1,keyword2,keyword3不被允许一样,因为只接受一个返回值。

我只是问自己,我的工作是否周而复始,看我上面的问题是否接近“最佳实践”?如果没有,你怎么解决这个问题。

这个查询实际上是有效的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-04 13:40:21

您的查询没有任何意义--当您重复同一条件三次时,您也可以在一个条件下进行查询。在我看来,这是一个糟糕的桌子设计。您最好将数据拆分成不同的表或行,但是我们需要查看整个表,以便更好地了解如何帮助您。

也许您可以通过使用嵌套的mysql ()函数来做任何您真正想做的事情,但是正如我所说的,我认为查询不是您的主要问题。

代码语言:javascript
运行
复制
SELECT distinct IF(jobtitle = "Programmer",keyword1,IF(jobtitle2 = "Programmer",keyword12, ... ))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21552784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档