表A
id sex Name .......
1 1 a 
2 2 b
3 1 c
4 2 d
表B
id Aid score ........
1 1 123
2 3 234 
3 2 345
4 4 456期望结果
sex1Name score1 sex2Name score2
  a 123 b 345
  c 234 d 456多谢个为大侠

解决方案 »

  1.   

    SELECT bz,
    MAX(IF(bz1=0,NAME,'     ')) AS sex1Name,
    MAX(IF(bz1=1,NAME,'     ')) AS sex2Name,
    MAX(IF(bz1=0,score,'     ')) AS score1,
    MAX(IF(bz1=1,score,'      ')) AS score2
     FROM (
    SELECT a.*,b.score,CEIL(a.id/2) AS bz,IF(a.id MOD 2=0,1,0) AS bz1 FROM ba1a a INNER JOIN bb1a b ON a.id=b.Aid) aa
    GROUP BY bz 
      

  2.   

    测试数据过少,建议提供更有代表性的数据。你表A中的SEX是交替出现的吗? (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  3.   

    SEX只出现在A表中
    其实最主要的就是想问下 用子查询充当列的时候能不能返回多个值表太多而且关联也很多创建表添加数据语句导出的话 大概1页显示不了
      

  4.   

    不能不需要你实际数据,需要你自己编造一个测试用例。别人帮你写,也是需要在自己机器上创建表,添加数据的。如果别人凭自己的理解建表,建数据很可能和你想表达的意思完全不同。  参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
      

  5.   

    -- phpMyAdmin SQL Dump
    -- version 2.9.2
    -- http://www.phpmyadmin.net
    -- 
    -- 主机: localhost
    -- 生成日期: 2010 年 05 月 06 日 17:08
    -- 服务器版本: 5.0.27
    -- PHP 版本: 5.2.1
    -- 
    -- 数据库: `helpdb`
    -- -- ---------------------------------------------------------- 
    -- 表的结构 `score`
    -- CREATE TABLE `score` (
      `id` int(11) NOT NULL auto_increment,
      `Uid` varchar(8) NOT NULL,
      `totalScore` int(11) NOT NULL,
      PRIMARY KEY  (`id`),
      KEY `sid_uid` (`Uid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;-- 
    -- 导出表中的数据 `score`
    -- INSERT INTO `score` (`id`, `Uid`, `totalScore`) VALUES 
    (1, '1', 655),
    (2, '2', 6155),
    (3, '3', 155),
    (4, '4', 155),
    (5, '5', 155),
    (6, '6', 1565),
    (7, '7', 874),
    (8, '8', 874),
    (9, '9', 874),
    (10, '10', 8754);-- ---------------------------------------------------------- 
    -- 表的结构 `users`
    -- CREATE TABLE `users` (
      `id` int(11) NOT NULL auto_increment,
      `Name` varchar(50) NOT NULL,
      `Sex` int(8) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ;-- 
    -- 导出表中的数据 `users`
    -- INSERT INTO `users` (`id`, `Name`, `Sex`) VALUES 
    (1, 'aaa', 1),
    (2, 'bbb', 1),
    (3, 'ccc', 1),
    (4, 'ddd', 1),
    (5, 'eee', 1),
    (6, 'fff', 1),
    (7, 'ggg', 1),
    (8, 'hhh', 1),
    (9, 'aa', 2),
    (10, 'bb', 2),
    (11, 'cc', 2),
    (12, 'dd', 2),
    (13, 'ee', 2),
    (14, 'ff', 2),
    (15, 'gg', 2),
    (16, 'hh', 2);
    sex1     name    sex2    name
    .         .      .       .
    .         .      .       .
    .         .      .       .
    .         .      .       .
      

  6.   

    sex1 name1 score1 sex2 name2 score2
    数据 数据  数据   数据  数据  数据
    数据 数据  数据   数据  数据  数据
    期望结果 
      

  7.   

    mysql> SELECT bz,
        -> MAX(IF(bz1=0,NAME,' ')) AS sex1Name,
        -> MAX(IF(bz1=1,NAME,' ')) AS sex2Name,
        -> MAX(IF(bz1=0,totalscore,' ')) AS score1,
        -> MAX(IF(bz1=1,totalscore,' ')) AS score2
        ->  FROM (
        -> SELECT a.*,b.totalscore,CEIL(a.id/2) AS bz,IF(a.id MOD 2=0,1,0) AS bz1 FR
    OM users a INNER JOIN score b ON a.id=b.uid) aa
        -> GROUP BY bz;
    +------+----------+----------+--------+--------+
    | bz   | sex1Name | sex2Name | score1 | score2 |
    +------+----------+----------+--------+--------+
    |    1 | aaa      | bbb      | 655    | 6155   |
    |    2 | ccc      | ddd      | 155    | 155    |
    |    3 | eee      | fff      | 155    | 1565   |
    |    4 | ggg      | hhh      | 874    | 874    |
    |    5 | aa       | bb       | 874    | 8754   |
    +------+----------+----------+--------+--------+
    5 rows in set (0.00 sec)
      

  8.   

    楼上的好厉害啊,我完全看不懂 在给你附加个条件
    按照totalScore 倒序 求前7个人
      

  9.   


    建议直接贴出基于测试数据的结果sex1 name1 score1 sex2 name2 score2
    数据 数据  数据   数据  数据  数据
    数据 数据  数据   数据  数据  数据这儿的数据是几 123 ? 还是直接输出 "数据" ?
      

  10.   

    贴你的结果SELECT * FROM score ORDER BY TOTALSCORE DESC LIMIT 7;
     SELECT bz,
       MAX(IF(bz1=0,NAME,' ')) AS sex1Name,
     MAX(IF(bz1=1,NAME,' ')) AS sex2Name,
     MAX(IF(bz1=0,totalscore,' ')) AS score1,
      MAX(IF(bz1=1,totalscore,' ')) AS score2
      FROM (
      SELECT a.*,b.totalscore,CEIL(a.id/2) AS bz,IF(a.id MOD 2=0,1,0) AS bz1 FROM users a INNER JOIN 
    (SELECT * FROM score ORDER BY TOTALSCORE DESC LIMIT 7) b ON a.id=b.uid) aa
    GROUP BY bz;