使用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
,但我觉得这更纯粹。我已经记下了。。。