2014-10-08 91 views
-1

我想知道如果在MySQL本身(没有PHP),你可以创建一个条件,如果真的然后选择1,2,但如果假然后选择1?或者在MySQL语法中类似的东西可以实现相同的效果?是否可以选择1列或2列?

谢谢。

+1

SQL查询返回固定数量的列。所以,你不能用一个查询来做你想要的。 – 2014-10-08 16:48:15

+0

你的意图有点不清楚。你只想在一个案例中返回1列结果集,或者在另一个案例中都返回两列结果集?如果是这样,请始终让SQL返回并使用您的应用程序代码逻辑来仅输出每个条件所必需的内容。 – 2014-10-08 16:48:46

+0

更具体地说,不是做if(value ='something',something,NULL),它可以不返回任何内容,甚至不是NULL值? – scrollup 2014-10-08 16:53:08

回答

2

缺少存储过程没有办法有条件地选择一定数量的列。任何一条SELECT语句返回的列数是静态的。你可以做的最好的是有两个CASE语句,在某些情况下会返回null。还有两列,但根据你的情况,其中一列是多余的。

+0

我曾经怀疑过这种情况,因为我已经做了相当多的研究,并没有看到任何方式去做。我想发布这个问题,看看我是否可能错过了一些东西。谢谢。 – scrollup 2014-10-08 17:02:10

0

其实我不确定这是否是你在找什么......但请看看

SELECT CASE ("column_name") 
WHEN "value1" THEN "result1" 
WHEN "value2" THEN "result2" 
... 
[ELSE "resultN"] 
END 
FROM "table_name"; 

请有此关键字的详细解释一下herehere

+0

感谢您的快速回复,我会研究您的答案(和链接),看看它是否满足我的问题。 – scrollup 2014-10-08 16:54:32

+0

查看您的答案后,我们仍然会得到相同数量的返回选择列,但具有不同的值。但是,谢谢。 – scrollup 2014-10-08 17:00:45

相关问题