Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL左侧连接-右侧不重复_Php_Mysql_Sql_Join - Fatal编程技术网

Php MySQL左侧连接-右侧不重复

Php MySQL左侧连接-右侧不重复,php,mysql,sql,join,Php,Mysql,Sql,Join,我有 我明白了 是否有可能以某种方式获得输出 column1 column2 column4 1 A C 2 B D 2 C D 我希望对于每个重复的table1.column1,table2.column4应该只出现一次,其余的时间都是空白的 我尝试了各种方法,但都没有成功。尝试以下查询: column1 column2 column4 1 A C 2

我有

我明白了

是否有可能以某种方式获得输出

column1 column2 column4
   1        A      C
   2        B      D
   2        C      D
我希望对于每个重复的table1.column1,table2.column4应该只出现一次,其余的时间都是空白的

我尝试了各种方法,但都没有成功。

尝试以下查询:

column1 column2 column4
   1        A      C
   2        B      
   2        C      D
试试看

select t4.column1,t4.column2,case when max2 is null 
then null else t4.column4 end as column4 from
(select table1.column1, table1.column2, table2.column4,t3.* from table1
left join table2 on table1.column1 = table2.column3
left outer join 
(select max2,max1 from
(select max(column2) max2,min(column2) min2,
max(column1) max1,min(column1) min1 from
(select table1.column1, table1.column2, table2.column4 from table1
left join table2 on table1.column1 = table2.column3)t1
group by column4)t2)t3
on table1.column1 = t3.max1 and table1.column2 = t3.max2)t4;

如果table1.column1与table2.column3多次匹配,您如何决定应该执行连接的匹配项?您可以使用@var来跟踪它。@eggyal-如果它能像上面的图表一样出现在column1的repeat字段的最后,那就太棒了,如果不是任何地方都可以。定义last?SQL表没有任何固有的顺序。你是说第四栏的值最大吗?如果有多个这样的记录呢?
column1 column2 column4
   1        A      C
   2        B      
   2        C      D
select t4.column1,t4.column2,case when max2 is null 
then null else t4.column4 end as column4 from
(select table1.column1, table1.column2, table2.column4,t3.* from table1
left join table2 on table1.column1 = table2.column3
left outer join 
(select max2,max1 from
(select max(column2) max2,min(column2) min2,
max(column1) max1,min(column1) min1 from
(select table1.column1, table1.column2, table2.column4 from table1
left join table2 on table1.column1 = table2.column3)t1
group by column4)t2)t3
on table1.column1 = t3.max1 and table1.column2 = t3.max2)t4;
select 
    new_t1.column1, new_t1.column2, if(new_t1.get_value, t2.column4,'')
from 
    (select
        t1.*, if(t1_tmp.column2 is null, 1, 0) as get_value
    from table1 t1
        left join table1 t1_tmp on t1.column1 = t1_tmp.column1 and t1.column2 < t1_tmp.column2
    ) as new_t1
    left join table2 t2 on new_t1.column1 = t2.column3