gpt4 book ai didi

php - UNION 查询的列名上的 MySQL 唯一标识符

转载 作者:行者123 更新时间:2023-11-29 01:42:22 24 4
gpt4 key购买 nike

我有两个共享“is_featured”列的不同表格。我需要选择所有选中“is_featured”的内容,然后按“date_display”desc 对结果进行排序。

            PHOTOS

item_name | date_display | is_featured
photo1 | 01-02-13 | yes
photo2 | 02-12-13 | yes
photo6 | 06-24-12 | no
photo23 | 09-24-12 | no

VIDEOS

item_name | date_display | is_featured
video5 | 01-14-13 | no
video10 | 03-09-13 | no
video30 | 03-21-13 | yes
video17 | 11-14-12 | yes


DESIRED RESULTS - All FEATURED CONTENT Sorted by Date DESC

item_name | date_display | is_featured
video30 | 03-21-13 | yes
photo2 | 02-12-13 | yes
photo1 | 01-02-13 | yes
video17 | 11-14-12 | yes

我可以通过这个 UNION 查询得到我想要的结果:

            SELECT *
FROM (SELECT item_name, date_display
FROM photos
WHERE is_featured='yes'
UNION
SELECT item_name, date_display
FROM videos
WHERE is_featured='yes'
) x
ORDER BY date_display DESC

我现在需要的是能够为每个表的 item_names 添加唯一标识符。例如:photos.item_name 和 videos.item_name。

我的查询是否可行?

我最终需要做如下事情:如果(item_name 来自 Photos 表){ 这样做}

最佳答案

尝试这样的事情:

...
FROM (SELECT item_name, date_display, 'photo' AS media_type
FROM photos...

视频子查询也类似。这将在您的结果集中创建一个列 media_type,即照片的“照片”列和视频的“视频”列。

您的结果集将如下所示:

        item_name  |  date_display  |  media_type
video30 | 03-21-13 | video
photo2 | 02-12-13 | photo
photo1 | 01-02-13 | photo
video17 | 11-14-12 | video

检查该值的具体方式取决于您处理查询结果的方式,但为了具体起见,这里提供了一些类似 Code Igniter 的伪代码。您可以根据需要调整它:

foreach($query->result() as $row) {
if ($row->media_type == 'photo') {
$featured_photos[$row->item_name] = $row;
}
else {
$featured_videos[$row->item_name] = $row;
}
}

这个例子有点傻,因为它只是撤销了查询中联合的工作,但重点是一旦你得到结果,你就可以使用 media_type 字段来区分项目的来源。

关于php - UNION 查询的列名上的 MySQL 唯一标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17057001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com