【问题标题】:Using id that are comma separated sql使用逗号分隔的 sql id
【发布时间】:2013-10-22 12:58:36
【问题描述】:

如果您运行此查询

select 
    GROUP_CONCAT(p1.id) _fid,
    GROUP_CONCAT(p2.id) _mid,
    count(1)
from
    new_person as pb
        inner join
    new_person as p1 ON pb.father_id = p1.id
        inner join
    new_person as p2 ON pb.mother_id = p2.id
where
    (p1.last_name <> 'N.N.'
        and p1.last_name <> '')
        or (p2.last_name <> 'N.N.'
        and p2.last_name <> '')
group by p1.first_name , p1.last_name , p2.first_name , p2.last_name
having count(1) > 1;

你会像这样得到一个 id 列表

'4676,6088,4804,4968,6554,5212,5504,5810,7298,7782,6970'

有没有办法让你可以立即在其他查询中使用它,还是必须先在 php 中加载它?

【问题讨论】:

    标签: mysql sql join subquery


    【解决方案1】:

    您可以像这样在另一个查询中使用它:

    SELECT M.*, P.* FROM 
    (  
    
      SELECT GROUP_CONCAT(p1.id) _fid, GROUP_CONCAT(p2.id) _mid, count(1)
      FROM new_person AS pb
         INNER JOIN new_person AS p1 ON pb.father_id = p1.id
         INNER JOIN new_person AS p2 ON pb.mother_id = p2.id
      WHERE (
         p1.last_name <> 'N.N.'
         AND p1.last_name <> '')
         OR (p2.last_name <> 'N.N.'
         AND p2.last_name <> '')
      GROUP BY p1.first_name, p1.last_name, p2.first_name, p2.last_name
      HAVING COUNT(1) > 1
    
    ) AS M INNER JOIN new_person as p ON M._fid = p.id
    

    请注意,我将整个查询添加到 from 语句中,别名为 M。然后你可以JOINM 到另一张桌子或从那里做任何你想做的事情。

    【讨论】:

    • 谢谢你的回答,如果我这样做了,我很抱歉我的回复迟了,然后运行 ​​select * from new_person as p inner join M on M._fid = p.id;我收到此错误错误代码:1146。表'memorix.M'不存在
    • 我用M 上的加入更新了我的答案,我认为你在追求。
    • 谢谢,我没有 enoph 积分来投票给你,否则我会这样做
    猜你喜欢
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多