Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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
Mysql查询:内部连接并从任何表中选择不为空的*_Mysql - Fatal编程技术网

Mysql查询:内部连接并从任何表中选择不为空的*

Mysql查询:内部连接并从任何表中选择不为空的*,mysql,Mysql,例如,我在同一个表上进行内部联接。 我想从表1或表2中选择那些值不为null的字段 以下是查询示例: SELECT a2.*,a.town FROM `ads` AS `a` LEFT JOIN discounts d ON d.ad_id=a.id INNER JOIN ads a2 ON a2.id=d.discount_ad_id LEFT JOIN `departments` AS `dp` ON dp.department_id = a.department LEFT JOIN `ma

例如,我在同一个表上进行内部联接。 我想从表1或表2中选择那些值不为null的字段

以下是查询示例:

SELECT a2.*,a.town
FROM `ads` AS `a`
LEFT JOIN discounts d ON d.ad_id=a.id
INNER JOIN ads a2 ON a2.id=d.discount_ad_id
LEFT JOIN `departments` AS `dp` ON dp.department_id = a.department
LEFT JOIN `map_towns` AS `mt` ON mt.town_id = a.town
WHERE (a.department = 9 OR a.department = 15)
GROUP BY `d`.`discount_id`
a2也有城镇字段,但我可以有空值。我需要选择a2.town,如果它不为空,以及a.town,如果它为空。 这与所有其他字段相关。:)

可能吗

谢谢;)

请注意,
折扣
上的
左连接
在您的查询中是多余的:将永远不会返回
NULL
记录,因为它们将永远不会被以下
内部连接
匹配到
ads a2


请注意,在查询中,
折扣
上的
左连接
是多余的:将永远不会返回
NULL
记录,因为它们将永远不会被以下
内部连接
匹配到
ads a2

查看
合并
函数,返回第一个非NULL参数

选择联合(a2.town,a.town)


查看
合并
函数,返回第一个非空参数

选择联合(a2.town,a.town)


使用ANSI函数COALESCE或MySQL函数IFNULL。根据需要为列添加别名

SELECT
   a2.id,
   a2.col2,
   coalesce(a2.town, a.town) town,
   IFNULL(a2.city, a.city) city,
 ...etc

使用ANSI函数COALESCE或MySQL函数IFNULL。根据需要为列添加别名

SELECT
   a2.id,
   a2.col2,
   coalesce(a2.town, a.town) town,
   IFNULL(a2.city, a.city) city,
 ...etc

是否有可能以动态的方式进行?不需要手动处理每个字段?@Beck:我不明白这个问题。“手动操作”是什么意思?合并(a2.*,a.*)我的意思是这种方式在某种程度上是可能的:)@贝克:啊。不,您必须为每个字段分别执行此操作。是否可以以动态方式执行此操作?不需要手动处理每个字段?@Beck:我不明白这个问题。“手动操作”是什么意思?合并(a2.*,a.*)我的意思是这种方式在某种程度上是可能的:)@贝克:啊。不,您必须为每个字段分别执行此操作。是否可以以动态方式执行此操作?无需手动对每个字段执行此操作?是否可以以动态方式执行此操作?无需手动对每个字段执行此操作?