gpt4 book ai didi

MySQL 左连接中的 IF 语句

转载 作者:行者123 更新时间:2023-11-29 23:21:58 25 4
gpt4 key购买 nike

我希望有人能帮助我。

我有以下查询

SELECT * FROM grids LEFT OUTER JOIN grid_images ON g_img_grid_id = g_id && ((g_img_main IS NOT NULL) || (g_img_main IS NULL && g_img_width >= 475)) WHERE g_blog_id IS NOT NULL GROUP BY g_id ORDER BY g_id DESC

它没有按照我想要的方式工作。我想要发生的是这样的。在 grid_images 的左连接中,如果有一个不为空的图像,我想用 g_img_main 选择一张图像,如果它们为空,那么我希望它根据大于 474 的宽度选择一张图像。所以 g_img_width >= 475.

有什么办法可以做到这一点吗?

为了进一步解释,我有两个表。一个是“网格”,另一个是“grid_images”。所以每个网格中可以有无限的图像。网格有一个 id“g_id”,每个图像都附加到一个“g_id”...所以在“grid_images”中“g_img_grid_id”告诉我图像属于哪个网格。有些网格将在所有图像“g_img_main”中标记出主图像,有些网格则不会。在左进中,如果有的话,我想选择标记为主“g_img_main”的图像,如果没有,我只想选择任何大于特定宽度“g_img_width”的图像。

== Table structure for table grids

|------
|Column|Type|Null|Default
|------
|//**g_id**//|int(11)|No|
|**g_permalink**|varchar(255)|No|
|g_type|tinyint(3)|No|3
|g_function|tinyint(3)|No|1
|g_format|tinyint(3)|No|1
|g_category|int(5)|No|
|g_name|varchar(255)|No|
|g_company_name|varchar(255)|Yes|NULL
|g_owner_id|int(11)|No|
|g_settings|text|No|
|g_about|text|No|
|g_website|varchar(2083)|No|
|g_donate_link|varchar(2083)|Yes|NULL
|g_donate_paypal|text|Yes|NULL
|g_image|varchar(255)|Yes|NULL
|g_view_permission|tinyint(1)|No|1
|g_post_permission|tinyint(1)|No|1
|g_allow_voting|tinyint(1)|Yes|NULL
|g_show_share|tinyint(4)|Yes|NULL
|g_site_grid|tinyint(1)|Yes|0
|g_date_created|int(11)|No|
|g_votes_per_user|int(11)|Yes|NULL
|g_votes_require_email|tinyint(1)|Yes|NULL
|g_facebook_eligible|tinyint(1)|Yes|NULL
|g_facebook_active|tinyint(1)|Yes|NULL
|g_facebook_app_tab_id|varchar(100)|Yes|NULL
|g_facebook_page_id|varchar(100)|Yes|NULL
|g_facebook_page_name|varchar(255)|Yes|NULL
|g_facebook_page_category|varchar(100)|Yes|NULL
|g_facebook_page_link|text|No|
|g_facebook_page_about|text|No|
|g_votes_rank_display|tinyint(1)|Yes|NULL
|g_lock_center|tinyint(1)|Yes|NULL
|g_passthe_item|varchar(255)|Yes|NULL
|g_facebook_img|varchar(255)|Yes|NULL
|g_pinterest_img|varchar(255)|Yes|NULL
|g_montage_img|varchar(255)|Yes|NULL
|g_views|int(11)|No|0
|g_blog_id|int(11)|Yes|NULL
== Dumping data for table grids

|------
|g_id|g_permalink|g_type|g_function|g_format|g_category|g_name|g_company_name|g_owner_id|g_settings|g_about|g_website|g_donate_link|g_donate_paypal|g_image|g_view_permission|g_post_permission|g_allow_voting|g_show_share|g_site_grid|g_date_created|g_votes_per_user|g_votes_require_email|g_facebook_eligible|g_facebook_active|g_facebook_app_tab_id|g_facebook_page_id|g_facebook_page_name|g_facebook_page_category|g_facebook_page_link|g_facebook_page_about|g_votes_rank_display|g_lock_center|g_passthe_item|g_facebook_img|g_pinterest_img|g_montage_img|g_views|g_blog_id
|------
|333|33-plus-ugliest-christmas-sweaters|1|1|4|0|33+ Ugliest Christmas Sweaters|NULL|11|null|<p><span style="line-height: 22.3999996185303px;">Just when you thought you've seen the ugliest Christmas sweaters around these people took ugly to the next level. Please feel free to share your comments, cuz some of these really need commenting...</span><br></p>| | |NULL| |1|2|NULL|1|1|1416865122|NULL|NULL|NULL|NULL|NULL|NULL|NULL|NULL| | |NULL|NULL|NULL|2014/11/26/14170476241649711529-4x3.jpg|2014/11/26/14170476241649711529pin-2x6.jpg|2014/11/26/14170476241649711529.jpg|0|20


== Table structure for table grid_images

|------
|Column|Type|Null|Default
|------
|//**g_img_id**//|int(11)|No|
|g_img_mem_id|int(11)|Yes|1
|g_img_dir|varchar(50)|No|
|g_img_file|varchar(100)|No|
|g_img_caption|text|Yes|NULL
|g_img_link|varchar(2083)|No|
|g_img_grid_id|int(11)|No|1
|g_img_date_added|int(11)|No|
|g_img_uploader_ip|int(11)|No|
|g_img_lat|decimal(18,12)|Yes|NULL
|g_img_lng|decimal(18,12)|Yes|NULL
|g_img_width|int(6)|Yes|NULL
|g_img_height|int(6)|Yes|NULL
|g_img_reported|tinyint(1)|Yes|NULL
|g_img_reported_access_code|varchar(100)|Yes|NULL
|g_img_last_edit|int(11)|Yes|NULL
|g_img_flickr_id|varchar(255)|No|
|g_img_facebook_id|varchar(255)|No|
|g_img_original_id|int(11)|Yes|NULL
|g_img_reposted_from|int(11)|Yes|NULL
|g_img_first_name|varchar(100)|Yes|NULL
|g_img_email|varchar(255)|Yes|NULL
|g_img_hearts|int(11)|No|0
|g_img_views|int(11)|No|0
|g_img_main|tinyint(1)|Yes|NULL
== Dumping data for table grid_images

|------
|g_img_id|g_img_mem_id|g_img_dir|g_img_file|g_img_caption|g_img_link|g_img_grid_id|g_img_date_added|g_img_uploader_ip|g_img_lat|g_img_lng|g_img_width|g_img_height|g_img_reported|g_img_reported_access_code|g_img_last_edit|g_img_flickr_id|g_img_facebook_id|g_img_original_id|g_img_reposted_from|g_img_first_name|g_img_email|g_img_hearts|g_img_views|g_img_main
|------
|15918|11|2014/11/22/|13793150131416692879.jpg| | |333|1416692879|849259821|NULL|NULL|453|768|NULL|NULL|NULL| | |NULL|NULL|NULL|NULL|0|0|NULL
|15919|11|2014/11/22/|4655589171416692816.jpg| | |333|1416692816|849259821|NULL|NULL|613|768|NULL|NULL|NULL| | |NULL|NULL|NULL|NULL|0|0|NULL
|15920|11|2014/11/22/|463211921416692661.jpg| | |333|1416692661|849259821|NULL|NULL|495|475|NULL|NULL|NULL| | |NULL|NULL|NULL|NULL|0|0|NULL

最佳答案

您可以将条件放在查询的 WHERE 部分吗?

SELECT 
*
FROM grids
LEFT OUTER JOIN grid_images
ON g_img_grid_id = g_id
WHERE g_blog_id IS NOT NULL
AND (g_img_main IS NOT NULL OR (g_img_main IS NULL AND g_img_width >= 475))
GROUP BY g_id
ORDER BY g_id DESC

关于MySQL 左连接中的 IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27235978/

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