Mysql 需要稍加修改的SQL查询

Mysql 需要稍加修改的SQL查询,mysql,sql,database,Mysql,Sql,Database,以上查询生成以下结果: 而且它并没有像我希望的那样100%正常工作。因为我想要这样的结果 这: 实际结果和期望结果是不同的,因为在期望结果中,它消除了具有空值的列,并且将两次apears的一个url列减少为一个。以下是进一步的视觉澄清: 问题是:有可能提出这个问题吗? 查询应该是什么样子的?如何构造它?关于显示的空值,可以使用以下构造: select IF(posty.id IS NULL, 0, 1) as posty, IF(strony.id IS NULL, 0,

以上查询生成以下结果:

而且它并没有像我希望的那样100%正常工作。因为我想要这样的结果

这: 实际结果和期望结果是不同的,因为在期望结果中,它消除了具有空值的列,并且将两次apears的一个url列减少为一个。以下是进一步的视觉澄清:

问题是:有可能提出这个问题吗?
查询应该是什么样子的?如何构造它?

关于显示的空值,可以使用以下构造:

select 
    IF(posty.id IS NULL, 0, 1) as posty,
    IF(strony.id IS NULL, 0, 1) as strony,
    posty.*, strony.*,
    `master`.url
from
(select 'fajne-to-jest' as url)  `master`
left join posty on posty.url = `master`.url
left join strony on strony.url = `master`.url
;
关于重复列:


一般来说,在prod环境中,应该始终列出要在结果中显示的列,而不是使用*通配符。将通配符替换为列列表,即可设置。

关于显示的空值,可以使用以下构造:

select 
    IF(posty.id IS NULL, 0, 1) as posty,
    IF(strony.id IS NULL, 0, 1) as strony,
    posty.*, strony.*,
    `master`.url
from
(select 'fajne-to-jest' as url)  `master`
left join posty on posty.url = `master`.url
left join strony on strony.url = `master`.url
;
关于重复列:


一般来说,在prod环境中,应该始终列出要在结果中显示的列,而不是使用*通配符。将通配符替换为列列表,即可设置。

您将从posty和strony获取所有列。尝试仅获取所需的列。它显示两次,因为您已从posty和strony中选择了所有列。如果需要某些特定数据,请使用精确的列名。是否可以。。。例如,我们有20列。我们只想得到19。。。。那么我们真的需要输入这19个coulmns吗?或者也许有办法只减去这一列我们不想做的?是的,单独列出19列(而不是使用*),不要列出你想排除的那一列。有时编写SQL有点重复。出于许多原因(性能、可读性等),最好只在查询中包含所需的列。所有列都来自posty和strony。尝试仅获取所需的列。它显示两次,因为您已从posty和strony中选择了所有列。如果需要某些特定数据,请使用精确的列名。是否可以。。。例如,我们有20列。我们只想得到19。。。。那么我们真的需要输入这19个coulmns吗?或者也许有办法只减去这一列我们不想做的?是的,单独列出19列(而不是使用*),不要列出你想排除的那一列。有时编写SQL有点重复。出于许多原因(性能、可读性等),最好只在查询中包含所需的列。