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

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

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

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

示例(伪代码)

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 我需要搜索值不存在的可能性。

标签: mysql sql select phpmyadmin conditional-statements


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多