gpt4 book ai didi

php - 如果 SQL IN 语句中的 Select 返回 NULL,则选择 ALL

转载 作者:行者123 更新时间:2023-11-29 21:16:27 26 4
gpt4 key购买 nike

我正在尝试缩短我的代码并使其更快。然而,我对这个说法有点挣扎。如果未设置值 page_category,我希望它返回所有新闻。

page_category 在数据库中设置为 1,2,3,4,每篇新闻文章都有 1 个类别,如下所示。

页面类别

Page Category

新闻类别

news

我想获取 page_category 中具有类别 ID 的每篇新闻文章。

这是我的声明,每当设置 page_category 时它都可以正常工作。

"AND n.news_category IN (SELECT page_category FROM pages WHERE page_name = :pagename AND page_deleted IS NULL)";

如何重写此代码,以便在 return 为 NULL 时,n.news_category 不计入在内?

这是我当前的全部声明:

 $sql = "SELECT n.news_title, n.news_content, n.news_published_dt "
. "FROM news n "
. "LEFT JOIN languages l "
. "ON n.news_lang = l.language_id "
. "WHERE ((l.language_val = :language) OR (n.news_lang_all IS NOT NULL)) "
. "AND n.news_deleted IS NULL "
. "AND n.news_published = 1 "
. "AND n.news_category IN (SELECT page_category FROM pages WHERE page_name = :pagename AND page_deleted IS NULL)";

最佳答案

假设 page_category 采用 NULL 值,并且您希望所有行都处于这种情况,则使用 exists 代替:

EXISTS (SELECT 1
FROM pages p
WHERE p.page_name = :pagename AND p.page_deleted IS NULL AND
(p.page_category is null or p.page_cateogry = n.news_category)
)

关于php - 如果 SQL IN 语句中的 Select 返回 NULL,则选择 ALL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35900245/

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