【问题标题】:select multiple values from same column从同一列中选择多个值
【发布时间】:2015-09-25 13:13:13
【问题描述】:
SELECT b_lastname, b_firstname, cscart_profile_fields_data.value AS VAT
FROM cscart_user_profiles
INNER JOIN cscart_profile_fields_data ON cscart_profile_fields_data.object_id = cscart_user_profiles.user_id
WHERE cscart_profile_fields_data.field_id =64
AND cscart_profile_fields_data.object_type = 'P'

我正在使用上面的代码,以便从 cscart_user_profiles 表以及 cscart_profile_fields_data 表,尤其是 value 字段中获取值。 我想做的是从同一查询中的值字段中获取不同的值,只需更改 field_id

【问题讨论】:

  • 请添加示例数据和预期输出

标签: mysql select inner-join


【解决方案1】:

如果我理解你的问题:

SELECT b_lastname, b_firstname, cscart_profile_fields_data.value AS VAT
FROM cscart_user_profiles
INNER JOIN cscart_profile_fields_data ON cscart_profile_fields_data.object_id = cscart_user_profiles.user_id
WHERE cscart_profile_fields_data.field_id IN (64, ...)
AND cscart_profile_fields_data.object_type = 'P'

此查询返回的行数与 WHERE IN 条件中的参数一样多

或:

SELECT b_lastname, b_firstname, GROUP_CONCAT(cscart_profile_fields_data.value SEPARATOR ';') AS VAT
FROM cscart_user_profiles
INNER JOIN cscart_profile_fields_data ON cscart_profile_fields_data.object_id = cscart_user_profiles.user_id
WHERE cscart_profile_fields_data.field_id IN (64, ...)
AND cscart_profile_fields_data.object_type = 'P'
GROUP BY b_lastname, b_firstname

上面的查询返回一行,在 VAT 列中有许多值,用 ; 分隔字符(如 CSV 文件)

【讨论】:

  • 感谢您的回答。这可行,但我在同一列(增值税)中得到结果。我如何创建另一个列来存储第二个 field_id 值的结果?
  • SELECT b_lastname, b_firstname, data1.value AS VAT, data2.value AS VAT2 FROM cscart_user_profiles JOIN cscart_profile_fields_data AS data1 ON data1.object_id = cscart_user_profiles.user_id AND data1.field_id =64 AND data1.object_type = ' P' JOIN cscart_profile_fields_data AS data2 ON data2.object_id = cscart_user_profiles.user_id AND data2.field_id =58 AND data2.object_type = 'P' 这是我想做的事情......
猜你喜欢
  • 2014-03-08
  • 2012-07-03
  • 2020-07-07
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
  • 2010-10-03
  • 2018-03-11
  • 2020-07-12
相关资源
最近更新 更多