Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.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
使用PHP Mysql如何从sql查询中的多个或多个条件中获得满足的条件?_Php_Mysql - Fatal编程技术网

使用PHP Mysql如何从sql查询中的多个或多个条件中获得满足的条件?

使用PHP Mysql如何从sql查询中的多个或多个条件中获得满足的条件?,php,mysql,Php,Mysql,我有以下疑问: $sql = "SELECT * FROM `tbl_user` WHERE `Code1`='114' OR `Code2`='114' OR `Code3`='114' OR `Code4`='114' OR `Code5`='114'"; 我可以找到满足条件Code1或Code2或Code3的列。。。通过array\u搜索返回结果的 但我能找到其他简单的解决办法吗

我有以下疑问:

$sql = "SELECT * 
        FROM `tbl_user` 
        WHERE `Code1`='114' 
        OR `Code2`='114' 
        OR `Code3`='114' 
        OR `Code4`='114' 
        OR `Code5`='114'";
我可以找到满足条件
Code1
Code2
Code3
的列。。。通过
array\u搜索返回结果的


但我能找到其他简单的解决办法吗

您可以使用IN谓词,如下所示

SELECT * FROM tbl_user WHERE 114 IN(Code1, Code2, Code3, Code4, Code5);

您可以使用IN谓词,如下所示

SELECT * FROM tbl_user WHERE 114 IN(Code1, Code2, Code3, Code4, Code5);

也许这就是你要找的

SELECT col FROM (
   SELECT "Code1" AS col, Code1 AS value FROM tbl_user
   UNION ALL SELECT "Code2", Code2 FROM tbl_user
   UNION ALL SELECT "Code3", Code3 FROM tbl_user
) allValues
WHERE value=114;

参考:

也许这就是你要找的

SELECT col FROM (
   SELECT "Code1" AS col, Code1 AS value FROM tbl_user
   UNION ALL SELECT "Code2", Code2 FROM tbl_user
   UNION ALL SELECT "Code3", Code3 FROM tbl_user
) allValues
WHERE value=114;

参考:

如果需要选择列名,则

 SELECT * FROM tbl_user.COLUMNS WHERE 114 IN(Code1, Code2, Code3, Code4, Code5);
最好的方法是使用信息模式元数据虚拟数据库。特别是信息_SCHEMA.COLUMNS表

选择
COLUMN\u NAME
信息\u架构
其中
TABLE\u SCHEMA
='yourdatabasename' 和
表名
='yourtablename';

它的功能非常强大,可以为您提供大量信息,而无需解析文本(例如列类型、列是否可为空、最大列大小、字符集等).

如果您需要选择列名

 SELECT * FROM tbl_user.COLUMNS WHERE 114 IN(Code1, Code2, Code3, Code4, Code5);
最好的方法是使用信息模式元数据虚拟数据库。特别是信息_SCHEMA.COLUMNS表

选择
COLUMN\u NAME
信息\u架构
其中
TABLE\u SCHEMA
='yourdatabasename' 和
表名
='yourtablename';

它的功能非常强大,可以为您提供大量信息,而无需解析文本(例如列类型、列是否可为空、最大列大小、字符集等).

您可以使用该函数实现所需的结果:

SELECT *,
       FIELD(114, code1, code2, code3, code4, code5) AS code
FROM tbl_user
WHERE FIELD(114, code1, code2, code3, code4, code5) > 0
输出(对于我的):

注意,如果您想要一个字符串列名而不仅仅是一个数字,那么可以使用

CONCAT('Code', FIELD(114, code1, code2, code3, code4, code5)) AS code

您可以使用以下功能实现所需的结果:

SELECT *,
       FIELD(114, code1, code2, code3, code4, code5) AS code
FROM tbl_user
WHERE FIELD(114, code1, code2, code3, code4, code5) > 0
输出(对于我的):

注意,如果您想要一个字符串列名而不仅仅是一个数字,那么可以使用

CONCAT('Code', FIELD(114, code1, code2, code3, code4, code5)) AS code


不确定你在问什么?只有5个代码列吗?我想看看一些表架构/示例数据。这个问题显示了数据库表设计不佳的症状。现在进行规范化是否为时已晚?不确定您在问什么?是否只有5个代码列?我想看看一些表架构/示例数据。这个问题显示了数据库表设计不佳的症状。现在进行规范化是否为时已晚?这并不能真正回答问题,即找出哪一列中有114个。@Muhammad Saqlin,但我如何从这个查询中得到哪一列与记录集匹配?@MuhammadSaqlin,答案是完美的。唯一的建议是,如果您提供参考,应该是技术的官方文档,例如php.net、oracle.com。@这并不能回答问题。阅读OPs对此答案的评论。如果这是答案,我们可以用以下内容结束页面:但是我觉得这不是一个完整的答案。这并不能真正回答问题,即找出哪列中有114。@Muhammad Saqlin,但是我如何从这个查询中得到哪列与记录集匹配?@MuhammadSaqlin,答案是完美的。唯一的建议是,如果您提供参考,应该是技术的官方文档,例如php.net、oracle.com。@这并不能回答问题。阅读OPs对此答案的评论。如果这是答案,我们可以用以下内容结束页面:但是我觉得这不是一个完整的答案。@mickmackusa是的,我想添加
CONCAT
,但我认为这更纯粹。我做了一个笔记…@mickmackusa是的,我想添加
CONCAT
,但我觉得这更纯粹。我已经记下了。。。