我有一个选择查询,选择附加了缩略图文件的文件,我还需要获取没有附加缩略图的文件.
我当前的SQL查询是
SELECT node.title, node.nid, files.fid, files.filepath,
content_type_mobile_event.field_date_value,
content_type_mobile_event.field_movie_shorts_value,
content_type_mobile_event.field_director_value,
content_type_mobile_event.field_length_value,
content_type_mobile_event.field_movie_type_value,
content_type_mobile_event.field_year_value,
content_type_mobile_event.field_event_type_value,
content_type_mobile_event.field_movie_location_value,
content_type_mobile_event.field_movie_desc_value,
content_type_mobile_event.field_movie_id_value,
content_type_mobile_event.field_movie_thumb_fid,
content_type_mobile_event.field_movie_trailer_url
FROM node, content_type_mobile_event, files
WHERE node.nid=content_type_mobile_event.nid AND
content_type_mobile_event.field_movie_thumb_fid=files.fid
ORDER BY content_type_mobile_event.field_date_value ASC
Run Code Online (Sandbox Code Playgroud)
我也需要
SELECT node.title, node.nid, content_type_mobile_event.field_date_value,
content_type_mobile_event.field_movie_shorts_value,
content_type_mobile_event.field_director_value,
content_type_mobile_event.field_length_value,
content_type_mobile_event.field_movie_type_value,
content_type_mobile_event.field_year_value,
content_type_mobile_event.field_event_type_value,
content_type_mobile_event.field_movie_location_value,
content_type_mobile_event.field_movie_desc_value,
content_type_mobile_event.field_movie_id_value,
content_type_mobile_event.field_movie_thumb_fid,
content_type_mobile_event.field_movie_trailer_url
FROM node, content_type_mobile_event
WHERE node.nid=content_type_mobile_event.nid AND
content_type_mobile_event.field_movie_thumb_fid!=1
ORDER BY content_type_mobile_event.field_date_value ASC
Run Code Online (Sandbox Code Playgroud)
我通常会做一个
(
SELECT node.title, node.nid, files.fid, files.filepath,
content_type_mobile_event.field_date_value,
content_type_mobile_event.field_movie_shorts_value,
content_type_mobile_event.field_director_value,
content_type_mobile_event.field_length_value,
content_type_mobile_event.field_movie_type_value,
content_type_mobile_event.field_year_value,
content_type_mobile_event.field_event_type_value,
content_type_mobile_event.field_movie_location_value,
content_type_mobile_event.field_movie_desc_value,
content_type_mobile_event.field_movie_id_value,
content_type_mobile_event.field_movie_thumb_fid,
content_type_mobile_event.field_movie_trailer_url
FROM node, content_type_mobile_event, files
WHERE node.nid=content_type_mobile_event.nid AND
content_type_mobile_event.field_movie_thumb_fid=files.fid
ORDER BY content_type_mobile_event.field_date_value ASC
)
UNION
(
SELECT node.title, node.nid, content_type_mobile_event.field_date_value,
content_type_mobile_event.field_movie_shorts_value,
content_type_mobile_event.field_director_value,
content_type_mobile_event.field_length_value,
content_type_mobile_event.field_movie_type_value,
content_type_mobile_event.field_year_value,
content_type_mobile_event.field_event_type_value,
content_type_mobile_event.field_movie_location_value,
content_type_mobile_event.field_movie_desc_value,
content_type_mobile_event.field_movie_id_value,
content_type_mobile_event.field_movie_thumb_fid,
content_type_mobile_event.field_movie_trailer_url
FROM node, content_type_mobile_event
WHERE node.nid=content_type_mobile_event.nid AND
content_type_mobile_event.field_movie_thumb_fid!=1
ORDER BY content_type_mobile_event.field_date_value ASC
)
Run Code Online (Sandbox Code Playgroud)
但问题是第二个列有不同的列(减去文件.*部分)
我不能为我的生活弄清楚如何做到这一点.
Gol*_*rol 49
如果您有不同的字段也有不同的含义,则您不能也不应该将它们返回到相同的位置.但是,您可以通过向字段添加null来填充空白,如下所示:
select id, name, date, null as userid, 'A' as recordtype from table1
union all
select id, name, null /*as date*/, userid, 'B' as recordtype from table2
Run Code Online (Sandbox Code Playgroud)
您可以在第一个选择中为null提供别名.为清晰起见,您可以在第二个选择中添加别名,但不会使用它.您甚至可以使用常量值,以便稍后区分记录类型.
dis*_*ake 11
如果选择A没有列,则只需使用空值
table A (colA, ColB, ColC)
table B (colA, ColD, ColE)
select colA, ColB, ColC, null, null from table A
union
select colA, null, null, colD, colE from table B
Run Code Online (Sandbox Code Playgroud)
只需要确保您匹配的每个列具有相同的数据类型
你可以伪造一个列来做联合
例如.
select x, y from A
union
select z, null from B
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67791 次 |
| 最近记录: |