MySql语法(Join、UNION ALL)?

MySql语法(Join、UNION ALL)?,mysql,Mysql,嗯。所以我有一个名为jos_sobi2_fields_data的表,它包含多个FID和部分。例如,fid=36中的baseDate包含“名称”,fid=39中的baseData包含“地址”。我需要编写一个查询,从jos_sobi2_fields_data中选择数据,并将名称放在一列中,地址放在旁边的一列中。到目前为止我已经试过了 Select baseDate from jos_sobi2_fields_data WHERE fid=36 and section = 54; UNION

嗯。所以我有一个名为jos_sobi2_fields_data的表,它包含多个FID和部分。例如,fid=36中的baseDate包含“名称”,fid=39中的baseData包含“地址”。我需要编写一个查询,从jos_sobi2_fields_data中选择数据,并将名称放在一列中,地址放在旁边的一列中。到目前为止我已经试过了

Select baseDate 
from jos_sobi2_fields_data 
WHERE fid=36 
and section = 54; 
UNION ALL 
Select baseData 
from jos_sobi2_fields_data 
WHERE fid=39 
AND section = 54;
但当我查询它时,它只是首先列出fid=36的基本数据,然后在它下面列出fid=39的基本数据。那我怎么才能把它分成两列,两列在一起


另一方面,该部分只是关于一个特定网站的信息,因此另一个网站可能是section=52。

您应该使用一个连接。。。可能是这样的:

SELECT jsfdName.baseData AS Name, jsfdAddr.baseData as Address
FROM jos_sobi2_fields_data AS jsfdName
JOIN jos_sobi2_fields_data AS jsfdAddr USING( section, sid )
WHERE jsfdName.fid = 36 AND jsfdAddr.fid = 39
    AND section = <section>
选择jsfdName.baseData作为名称,选择jsfdAddr.baseData作为地址
来自jos_sobi2_字段_数据作为jsfdName
使用(节,sid)将jos_sobi2_字段_数据作为JSFDADR连接
其中jsfdName.fid=36,jsfdAddr.fid=39
和节=

替换为节号(或者一个准备好的语句占位符,甚至更好)。

它缺少节过滤器(比如
jsfdName.section=54
),但这就是我要使用的。你从哪里得到jsfdName和jsfdAddr?我没有那些桌子。信息存储在同一个表中……这里的这一行:
jos\u sobi2\u fields\u data jsfdName
读取您拥有的表并将其别名为
jsfdName
。对于
jsfdAddr
也一样。我们要将表本身连接起来,所以需要给它加上别名。@TheVedge谢谢,我现在就来解决它!好啊我现在明白了。不幸的是,当我运行这个命令时,它只获取一个名称,所以像Justin一样,所有地址都会重复出现。。。。有什么想法吗?