当多个WHEN-Columns时,mySQL案例

时间:2014-02-04 12:36:49

标签: php mysql sql

我有一张13列的表。

ID,

JOBTITLE,关键字1,关键字2,KEYWORD3, jobtitle2,keyword12,keyword22,keyword23, jobtitle3,keyword13,keyword23,keyword33。

我正在努力实现以下目标。 当jobtitle获得特定值(例如Programmer)时,我想要keyword1,keyword2和keyword3的值。

当jobtitle2获得特定值(例如程序员)时,我想要关键字12,关键字22和关键字23的vaules。

当jobtitle3获得特定值(例如程序员)时,我想要关键字13,关键字23和关键字33的值。

所有三个,两个或仅一个作业标题都可以有一个值。

我得到了以下mySQL查询

    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

据我所知,somth。喜欢jobtitle =“Programmer”的情况,那么不允许使用keyword1,keyword2,keyword3,因为只接受一个返回值。

我只是问自己我的工作是否已经开始,看看我上面的询问是否接近“最佳实践”?如果没有,你会如何解决这个问题。

查询实际上正在运行。

1 个答案:

答案 0 :(得分:0)

您的查询没有任何意义 - 当您重复相同的条件三次时,您也可以在一个条件下执行此操作。对我来说,它看起来很像一个糟糕的桌面设计。将数据拆分成不同的表或行可能会更好,但我们需要查看整个表格,以便更好地了解如何帮助您。

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

SELECT distinct IF(jobtitle = "Programmer",keyword1,IF(jobtitle2 = "Programmer",keyword12, ... ))