考慮:
CREATE TABLE `test_flat` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`rec1` varchar(100) DEFAULT NULL,
`rec2` varchar(100) DEFAULT NULL,
`rec3` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
);
隨着初始數據:
INSERT INTO test_flat VALUES (NULL, 'name 0', '1', '2', '3');
INSERT INTO test_flat VALUES (NULL, 'name 1', '11', '12', '13');
SELECT * FROM test_flat;
+----+--------+------+------+------+
| id | name | rec1 | rec2 | rec3 |
+----+--------+------+------+------+
| 1 | name 0 | 1 | 2 | 3 |
| 2 | name 1 | 11 | 12 | 13 |
+----+--------+------+------+------+
您可以:
SELECT *, IF (rec1 = '2', 'rec1', IF (rec2 = '2', 'rec2', IF (rec3 = 'rec3', 'rec3', ''))) AS matched FROM test_flat WHERE rec1 = '2' or rec2 = '2' or rec3 = '2';
+----+------+------+------+------+---------+
| id | name | rec1 | rec2 | rec3 | matched |
+----+------+------+------+------+---------+
| 1 | name | 1 | 2 | 3 | rec2 |
+----+------+------+------+------+---------+
返回並修復數據庫模式。每一個解決方案都會將痘痘添加到你的疣中:-) – paxdiablo 2012-03-06 05:11:23
我不知道它D:這個東西是由3個不同的人建造了3年,所有人都通過構建它來學會編碼。然後我學會了對它進行編碼調試。我很樂意粉碎這個東西並且正確地重建它,但是考慮到我的時間限制,它確實是不可能的。 hackathon2012。 – samuel 2012-03-06 05:28:58