Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 动态选择要从中选择数据的字段_Mysql - Fatal编程技术网

Mysql 动态选择要从中选择数据的字段

Mysql 动态选择要从中选择数据的字段,mysql,Mysql,假设我有一个三列的表primaryNum,secondaryNum,chosenNum。primarynum和secondaryNum都是数值,但chosenNum的值可以是primarynum、secondaryNum,也可以同时是primarynum和secondaryNum chosenNum字段是一列,它为我提供了在特定字段中搜索数字的选项 例如:我可能希望尝试在chosenNum中存储的列中查找值为10的所有行。如果chosenNum的值为both,则如果primaryNum、seco

假设我有一个三列的表primaryNum,secondaryNum,chosenNum。primarynum和secondaryNum都是数值,但chosenNum的值可以是primarynum、secondaryNum,也可以同时是primarynum和secondaryNum

chosenNum字段是一列,它为我提供了在特定字段中搜索数字的选项

例如:我可能希望尝试在chosenNum中存储的列中查找值为10的所有行。如果chosenNum的值为both,则如果primaryNum、secondaryNum中的任一列的值为10,则将返回该行

我的select语句可能是什么样的

如果我说我想做一个select语句,比如:

从aTable中选择*,其中从bTable中选择bVal,其中aVal=@varField=0

其中@varField是标签存储在chosenNum中的字段中的值,如果chosenNum=两者,则为任一字段中的值

这将导致我返回id为1,2,3,4,6,7,14,15,16,19,20,21,23,24,27的行

表A:创建

CREATE  TABLE `test`.`aTable` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `primaryNum` INT NULL ,
  `secondaryNum` INT NULL ,
  `chosenNum` CHAR(12) NULL ,
  PRIMARY KEY (`id`) );
表B:创建

CREATE  TABLE `test`.`bTable` (
  `aVal` INT NULL ,
  `bVal` INT NULL );
表A:数据

INSERT INTO test.aTable VALUES (1,8,7,'secondaryNum'),(2,2,9,'secondaryNum'),(3,7,9,'both'),(4,5,1,'both'),(5,10,3,'secondaryNum'),(6,10,6,'both'),(7,7,8,'both'),(8,10,2,'primaryNum'),(9,2,1,'secondaryNum'),(10,7,2,'secondaryNum'),(11,2,2,'secondaryNum'),(12,5,1,'secondaryNum'),(13,1,6,'primaryNum'),(14,6,6,'both'),(15,4,9,'both'),(16,9,7,'primaryNum'),(17,8,3,'secondaryNum'),(18,10,7,'primaryNum'),(19,8,5,'secondaryNum'),(20,1,7,'both'),(21,7,9,'both'),(22,8,3,'primaryNum'),(23,6,2,'primaryNum'),(24,5,7,'both'),(25,2,1,'both'),(26,5,2,'secondaryNum'),(27,7,8,'primaryNum');
表B:数据

INSERT INTO test.bTable VALUES (1,1),(2,1),(3,1),(4,1),(5,0),(6,0),(7,0),(8,1),(9,0),(10,1);

您可以这样做:

select * 
from MyTable
where (chosenNum in ('both', 'primaryNum') and primaryNum = 10)
    or (chosenNum in ('both', 'secondaryNum') and secondaryNum = 10)

请提供样本数据和期望的输出。我希望有更漂亮的东西,但这真的很好。谢谢你的帮助。我最终用这个答案的想法来解决我的问题。