MYSQL - 从列中选择一个值或(如果没有给出值)全选[关闭]

Posted

技术标签:

【中文标题】MYSQL - 从列中选择一个值或(如果没有给出值)全选[关闭]【英文标题】:MYSQL - Select one value from column or (if no value is given) select all [closed] 【发布时间】:2018-06-29 05:41:17 【问题描述】:

由于缺乏 mysql 语言知识,我无法创建查询来获取所需内容。

我从 *** 和其他地方尝试了几个选项,但没有一个有效。

详细说明...我需要在列中选择一个特定值,但如果没有给出该值,我想全选。

示例(伪代码)

SELECT * 
FROM table 
WHERE id = 'specificvalue' 
      IF 'specificvalue' IS NULL, THEN SELECT * FROM table

编辑:不想打破任何规则。我在下面添加了一张表格示例的图片。

我想在 FName 中搜索特定的“jack”,但如果我没有名字,我想全部搜索。

我试图用 IS NULL 创建一个条件,但失败得很惨……

希望有人能再次帮助我!!

Table example

【问题讨论】:

该选定列中的值是否必须为NULL 才能选择其他字段,或者specificvalue (id) 是否必须为NULL 显示您的表架构和一些示例数据,以及示例输出。此外,第二条语句SELECT * FROM column 有列,SQL 需要一个表名。 你为什么不直接使用if/else或者一个案例? @Philipp Maurer 我需要搜索值不存在的可能性。 见meta.***.com/questions/333952/… 【参考方案1】:

使用NOT EXISTS 条件。

SELECT *
FROM table
WHERE id = 'specificvalue'
    OR NOT EXISTS (
        SELECT * 
        FROM table
        WHERE id = 'specificvalue'
        )

【讨论】:

太棒了!谢谢巴尔玛。做了一个简单的调整以适应我的代码并对其进行测试并像魅力一样工作。【参考方案2】:

假设 ID 是唯一的,关于使用 IFNULL:

SELECT * 
FROM table 
WHERE id = IFNULL('specificvalue',id)

如果您的值为 null,它会查找 id=id 的所有行,这将始终为 true,id 将始终与自身匹配。

IS NULL 也应该有效:

SELECT * 
FROM table 
WHERE id = 'specificvalue' 
OR 'specificvalue' IS NULL

【讨论】:

以上是关于MYSQL - 从列中选择一个值或(如果没有给出值)全选[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Rails:从列中选择唯一值

Rails:从列中选择唯一值

MySQL 从列中选择使用 ^ 作为分隔符

在JavaScript / jQuery中从列中获取所有值而不重复

需要使用 pandas.str() 使用字符串列表从列中选择值 [重复]

如何将 SELECT ALL 值或 SELECTED 复选框值插入 mysql 中的不同列?