[英]Using PHP Mysql how can I get which condition satisfied from multiple OR condition in a sql query?
我有以下查询:
$sql = "SELECT *
FROM `tbl_user`
WHERE `Code1`='114'
OR `Code2`='114'
OR `Code3`='114'
OR `Code4`='114'
OR `Code5`='114'";
我能找到满足条件的列Code1
或Code2
或Code3
由... array_search
返回结果的。
但是我还能得到其他任何简单的解决方案吗?
您可以使用FIELD
函数获得所需的结果:
SELECT *,
FIELD(114, code1, code2, code3, code4, code5) AS code
FROM tbl_user
WHERE FIELD(114, code1, code2, code3, code4, code5) > 0
输出(对于我的演示 ):
code1 code2 code3 code4 code5 code
45 32 114 5 12 3
114 34 98 93 12 1
57 114 48 23 72 2
12 75 8 3 114 5
49 4 198 114 52 4
请注意,如果您想要一个字符串列名而不是一个数字,则可以使用
CONCAT('Code', FIELD(114, code1, code2, code3, code4, code5)) AS code
也许这就是您想要的?
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);
最好的方法是使用INFORMATION_SCHEMA元数据虚拟数据库。 特别是INFORMATION_SCHEMA.COLUMNS表...
从INFORMATION_SCHEMA
选择COLUMN_NAME
。 COLUMNS
WHERE TABLE_SCHEMA
= 'yourdatabasename' AND TABLE_NAME
= 'yourtablename'; 它非常强大,可以为您提供大量信息,而无需解析文本(例如列类型,列是否可为空,最大列大小,字符集等)...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.