我有一张13栏的桌子。
身份证,
职称,keyword1,keyword2,keyword3,jobtitle2,keyword12,keyword22,keyword23,jobtitle3,keyword13,keyword23,keyword33。
我正在努力实现以下目标。当职称得到一个特定的值(例如程序员)时,我想要keyword1、keyword2和keyword3的值。
当jobtitle2得到一个特定的值(例如程序员)时,我想要keyword12、keyword22和keyword23的值。
当jobtitle3得到一个特定的值(例如程序员)时,我想要keyword13、keyword23和keyword33的值。
所有三个、两个或仅仅一个职位都有价值。
我得到了以下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
据我所知。就像当jobtitle=“程序员”然后keyword1,keyword2,keyword3不被允许一样,因为只接受一个返回值。
我只是问自己,我的工作是否周而复始,看我上面的问题是否接近“最佳实践”?如果没有,你怎么解决这个问题。
这个查询实际上是有效的。
发布于 2014-02-04 05:40:21
您的查询没有任何意义--当您重复同一条件三次时,您也可以在一个条件下进行查询。在我看来,这是一个糟糕的桌子设计。您最好将数据拆分成不同的表或行,但是我们需要查看整个表,以便更好地了解如何帮助您。
也许您可以通过使用嵌套的mysql ()函数来做任何您真正想做的事情,但是正如我所说的,我认为查询不是您的主要问题。
SELECT distinct IF(jobtitle = "Programmer",keyword1,IF(jobtitle2 = "Programmer",keyword12, ... ))
https://stackoverflow.com/questions/21552784
复制相似问题