两列,相同的数据,不同的 Where 子句

Posted

技术标签:

【中文标题】两列,相同的数据,不同的 Where 子句【英文标题】:Two Columns, Same Data, Different Where Clauses 【发布时间】:2016-11-21 19:34:11 【问题描述】:

我需要使用两个不同的 WHERE 子句语句查询同一列。

我正在使用 Magento,但无法更改表格格式。

表格视图:catalog_product_entity_varchar

entity_id | attribute_id | value                |
5         | 60           | Bear Apprentice      |
5         | 86           | bear-apprentice      |
5         | 71           | Item Description     |
5         | 74           | /a/p/apprentice2.jpg |

我想让它显示为:

entity_id | Item Name            |  img                   |
5         |  Bear Apprentice     | /a/p/apprentice2.jpg   |

最终使attribute_id 6074 出现在同一行但在两个单独的列中。 是否可以对列别名执行 WHERE 子句?

谢谢!

【问题讨论】:

你知道attribute_id吗? @Shaharyar 是的,我想在同一行的两个不同列中获取属性 ID 60 和 74。 【参考方案1】:

mysql 中,一种透视方法是使用 casemaxgroup by。这确实假设 entity_Id 只能有一个配对值(每个实体每个值 1 个属性),例如60 对于实体​​ 5 只能出现一次。

SELECT entity_ID
     , max(case when attribute_Id = 60 then value end) as `Item Name`
     , max(case when attribute_Id = 74 then value end) as img
FROM tableName
WHERE entity_ID = 5
GROUP BY entity_ID

【讨论】:

以上是关于两列,相同的数据,不同的 Where 子句的主要内容,如果未能解决你的问题,请参考以下文章

在laravel中雄辩的where子句中连接两列

如何比较excel两列数据是否相同

如何对比出EXCEL两列数据不相同的数据

两个表上的并集,其中一个带有 where 子句

excel两列数据中如何找出相同的数据并对应排列

sql怎么查询出两列字段相同的数据(在忽略英文大小写和空格的情况下)