根据一列的值获取输出

时间:2014-10-30 20:10:14

标签: mysql

我有一个表格,列和数据就像这样

|   ID  |   Prop    |   Value   |   String      |
|   1   |   C       |   1       |   NULL        |
|   1   |   Notes   |   NULL    |   TestNote    |   
|   1   |   E       |   59      |   NULL        |
|   1   |   Notes   |   NULL    |   Note2       |
|   2   |   C       |   1       |   NULL        |

我尝试做的是在Prop列上同时获取Notes和C行

我已经尝试了

SELECT * FROM table WHERE Prop IN ("C", "Notes")

这是

的输出
|   ID  |   Prop    |   Value   |   String      |
|   1   |   C       |   1       |   NULL        |
|   2   |   C       |   1       |   NULL        |

它只输出一列。当我使用' OR'

时,这是相同的输出

然后我试了

SELECT * FROM table WHERE Prop = "C" AND Prop = "Notes"

但我得到一个空结果,如果我分开选择语句,如

SELECT * FROM table WHERE Prop = "C" 

然后在另一个窗口上再做一次

SELECT * FROM table WHERE Prop = "Notes" 

它有效,但不是我需要它如何工作。

我希望得到的输出是这样的:

|   ID  |   Prop    |   Value   |   String      |
|   1   |   C       |   1       |   NULL        |
|   1   |   Notes   |   NULL    |   TestNote    |   
|   1   |   Notes   |   NULL    |   Note2       |
|   2   |   C       |   1       |   NULL        |

知道如何才能让它发挥作用吗?

2 个答案:

答案 0 :(得分:0)

你为什么不使用" OR"介于两者之间?

 SELECT * FROM table WHERE Prop = 'C' OR Prop = 'Notes'

答案 1 :(得分:0)

条件Prop = "C" AND Prop = "Notes"永远不会成立,因此无效。

以下查询已发布应该可以正常使用

SELECT * FROM table WHERE Prop IN ("C", "Notes")

如果它不起作用,则可能是这些值区分大小写的情况。

在您的查询中使用LOWER()功能,如

SELECT * FROM table WHERE LOWER(Prop) in ('c','notes');

(OR)作为替代用途UNION

SELECT * FROM table WHERE Prop = 'C' 

UNION

SELECT * FROM table WHERE Prop = 'Notes'