我有一张桌子。它有一些列:f1t,f2t,...到... f18t。 而且我有$ id = 4.所以我想算一下f = t = $ id。 也许f2t,f10t和f15t = $ id。所以计数将是3
我该怎么做? 我试过了:
$sql2 = "SELECT (
(f1t = \"".$id."\")+
(f2t = \"".$id."\")+
(f3t = \"".$id."\")+
(f4t = \"".$id."\")+
(f5t = \"".$id."\")+
(f6t = \"".$id."\")+
(f7t = \"".$id."\")+
(f8t = \"".$id."\")+
(f9t = \"".$id."\")+
(f10t = \"".$id."\")+
(f11t = \"".$id."\")+
(f12t = \"".$id."\")+
(f13t = \"".$id."\")+
(f14t = \"".$id."\")+
(f15t = \"".$id."\")+
(f16t = \"".$id."\")+
(f17t = \"".$id."\")+
(f18t = \"".$id."\")
) AS totalCount FROM ".TB_PREFIX."fdata WHERE vref = ".$_SESSION['wid'];
$sql1 = mysql_query($sql2);
echo "<br>".$sql1;
感谢名单
答案 0 :(得分:1)
基于目前为止我所理解的内容。
您需要使用+
来获取count
。
要在所有行的4
列中出现f1t .... f8t
SELECT
(
(f1t = 4)+
(f2t = 4)+
(f3t = 4)+
(f4t = 4)+
(f5t = 4)+
(f6t = 4)+
(f7t = 4)+
(f8t = 4)
) AS totalCount
FROM your_table
注意:强>
由于MySQL布尔表达式解析为0/1
,因此您可以在您的情况下使用它。
请注意(a=b) returns 1 only if a is equal to b otherwise it returns 0
<强> TEST:强>
-- ----------------------------
-- Table structure for `your_table`
-- ----------------------------
DROP TABLE IF EXISTS `your_table`;
CREATE TABLE `your_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
f1t INT,
f2t INT,
f3t INT,
f4t INT,
f5t INT,
f6t INT,
f7t INT,
f8t INT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of your_table
-- ----------------------------
INSERT INTO `your_table` VALUES ('1', '2','3','4','4','1','8','4','9');
INSERT INTO `your_table` VALUES ('2', '2','8','1','5','4','8','4','9');
______
SELECT
*
FROM your_table;
| id | f1t | f2t | f3t | f4t | f5t | f6t | f7t | f8t |
|----|-----|-----|-----|-----|-----|-----|-----|-----|
| 1 | 2 | 3 | 4 | 4 | 1 | 8 | 4 | 9 |
| 2 | 2 | 8 | 1 | 5 | 4 | 8 | 4 | 9 |
在这组数据上运行上面给出的查询,您将得到以下输出:
<强>输出:强>
| totalCount |
|------------|
| 3 |
| 2 |
建议:规范化您的数据
答案 1 :(得分:0)
我认为这不可能,你应该改变你的表的结构,以便f1t,f2t ...到... f18t将是行。然后你可以使用count运算符轻松完成它。