php - 加入 GROUP_CONCAT 只返回 1 行

标签 php mysql

我正在尝试返回一个结果集,其中包含另一个表中动态字段的分隔列表。它似乎有效,但即使我多次复制同一行,结果也只返回一行。

这是我的查询:

SELECT export_rules.*, GROUP_CONCAT( CAST( CONCAT( export_rule_fields.key, ': ', export_rule_fields.value ) AS char ) SEPARATOR '|') AS fields FROM export_rules
JOIN export_rule_fields ON export_rules.id = export_rule_fields.export_rule_id
WHERE export_rules.output_type = "email"
AND (export_rules.frequency = "daily" 
    AND export_rules.last_execution < TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY))
    AND (export_rules.cron_expression = "25 11 * * *" 
        OR export_rules.cron_expression = "30 11 * * *" ))
OR (export_rules.frequency = "weekly" 
    AND export_rules.last_execution < TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 WEEK))
    AND (export_rules.cron_expression = "25 11 * * 5"
        OR export_rules.cron_expression = "30 11 * * 5" ))
OR (export_rules.frequency = "monthly" 
    AND export_rules.last_execution < TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 MONTH))
    AND (export_rules.cron_expression = "25 11 15 * *"
        OR export_rules.cron_expression = "30 11 15 * *" ))
GROUP BY export_rules.id

它应该通过相应的表达式获取 crons 列表(该部分有效),然后将它们与它们的字段一起吐出,但我认为 GROUP_CONCAT 或每个导出规则的连接有多行的事实正在抛出它关了。

最佳答案

我通过使用 LEFT JOIN 而不是常规 JOIN 来解决它。当我之前测试它时,我没有 GROUP BY export_rules.id。

此问题已解决。

关于php - 加入 GROUP_CONCAT 只返回 1 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14901203/

相关文章:

php - 将 PHP 文本区域输入部分添加到 SQL 查询报告

php - Facebook 应用程序,好友数据访问 token 不起作用

mysql - 如何在执行 SET sql_mode = '' 后将 mysql 模式重置为默认值

php - sql count 显示数量

c# - 使用 Linq 对三个表进行内联接

php - 关于将 JavaScript 生成的内容发布到文件以供下载为 CSV 的建议

php - 在 BigCommerce 上应用外部运费

php - 关于 CActiveDataProvider 与缓存数据库查询的奇怪行为

php - 如何根据年底将月份和年份存入数据库

php - MySQL连接查询超过1个id