MYSQL SELECT 但有条件

问题描述 投票:0回答:1

MYSQL SELECT 语句中是否可以包含取决于用户选择的条件?为了清楚起见进行了编辑。 这样做的东西:

IF user *does A* SELECT * FROM myTable
IF user *does B* SELECT colB, colC, colD FROM myTable
ELSE SELECT * FROM myTable WHERE ID < 5

原始帖子引用了专有前端,但我只是想看看是否有单独 MYSQL 查询的解决方案。

我有一个 MYSQL 查询,它根据列值的下拉选择返回表的过滤视图。如果下拉列表与列中的值匹配或者用户选择“显示全部”,我想包含一个“返回表格的全部”选项。像这样的: 有没有办法像这样使用 ELSE:

SELECT colA FROM mytable WHERE *userChoice* = colA ELSE SELECT * FROM myTable

或者,我认为可以用 case 语句来完成,但我无法弄清楚语法:

CASE WHEN userPick = colA THEN SELECT colA FROM myTable WHEN userPick = colB THEN SELECT colB FROM myTable WHEN userPick = selectAll THEN SELECT * FROM myTable ELSE SELECT * FROM myTable END

我想在查询中添加一个子句,如果用户

从 colA 中选择不同的值,则该子句将允许我返回其他内容。

mysql select case
1个回答
2
投票
Mysql 根据逻辑在存储过程中动态构建查询字符串

像下面这样的查询

CREATE DEFINER=`root`@`localhost` PROCEDURE `test`(input VARCHAR(15)) BEGIN SET @input = input; if @input="asc" then SET @sort = " order by ActivityLogKey asc"; elseif @input = "desc" then SET @sort = " order by ActivityLogKey desc"; else SET @sort =""; end if; SET @query = CONCAT('select * from activitylog ',@sort,' limit 0, 5'); PREPARE stmt FROM @query; EXECUTE stmt; DEALLOCATE PREPARE stmt; END

© www.soinside.com 2019 - 2024. All rights reserved.