mysql 键值对_从MySQL中的键值对表中检索数据

bd96500e110b49cbb3cd949968f18be7.png

I have two tables, one called customer and one called customer_attributes.

The idea is that the customer table holds core customer data, and the application can be customised to support additional attributes depending on how it is used.

customer_attributes has the following 3 columns:

customerID

key1

value1

Can I retrieve the full row, with any additional attributes if specified, defaulting to NULL if not? I'm using the following query but it only works if both attributes exist in the customer_attributes table.

SELECT `customer`.*, `ca1`.`value1` AS `wedding_date`, `ca2`.`value1` AS `test`

FROM `customer`

LEFT JOIN `customer_attributes` AS `ca1` ON customer.customerID = ca1.customerID

LEFT JOIN `customer_attributes` AS `ca2` ON customer.customerID = ca2.customerID

WHERE (customer.customerID = '58029')

AND (ca1.key1 = 'wedding_date')

AND (ca2.key1 = 'test')

In this case the two attributes I'm interested in are called 'wedding_date' and 'test'

解决方案

Try this:

SELECT `customer`.*, `ca1`.`value1` AS `wedding_date`, `ca2`.`value1` AS `test`

FROM `customer`

LEFT JOIN `customer_attributes` AS `ca1` ON customer.customerID = ca1.customerID AND ca1.key1='wedding_date'

LEFT JOIN `customer_attributes` AS `ca2` ON customer.customerID = ca2.customerID AND ca2.key1='test'

WHERE (customer.customerID = '58029')

Moving the 2 WHERE conditions on ca1/ca2 into the JOIN condition instead should sort it

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值