我有一张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,因为只接受一个返回值。
我只是问自己我的工作是否已经开始,看看我上面的询问是否接近“最佳实践”?如果没有,你会如何解决这个问题。
查询实际上正在运行。
答案 0 :(得分:0)
您的查询没有任何意义 - 当您重复相同的条件三次时,您也可以在一个条件下执行此操作。对我来说,它看起来很像一个糟糕的桌面设计。将数据拆分成不同的表或行可能会更好,但我们需要查看整个表格,以便更好地了解如何帮助您。
也许你可以通过使用嵌套的mysql IF()函数做任何你想要做的事情,但正如我所说,我不认为查询是你的主要问题。
SELECT distinct IF(jobtitle = "Programmer",keyword1,IF(jobtitle2 = "Programmer",keyword12, ... ))