我有一个存储配置选项的MySQL表。
config_options表如下
------------------------------------------------
id config_id q_id ans_id
------------------------------------------------
1 5 602 152
2 5 603 156
3 6 610 169
4 6 603 156
5 6 602 152
6 28 603 157
7 28 601 107
例如,如果用户选择问题并且选项602-> 152,603-> 156,610-> 169 我期待结果应该只显示3行(3,4,5)。
我得到了这个结果:
------------------------------
id config_id q_id ans_id
------------------------------
1 5 603 156
2 5 602 152
3 6 610 169
4 6 603 156
5 6 602 152
我使用以下查询:
SELECT *
FROM config_options a
WHERE (a.q_id=602 and a.ans_id=152) OR
(a.q_id=610 and a.ans_id=169) OR
(a.q_id=603 and a.ans_id=156)
ORDER BY config_id
这是SQLFIDDLE的路径 http://sqlfiddle.com/#!9/c73a1
CREATE TABLE config_options (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
config_id int,
q_id int,
ans_id int
);
INSERT INTO config_options
(config_id,q_id,ans_id)
VALUES
(5,603,156),
(5,602,152),
(6,610,169),
(6,603,156),
(6,602,152),
(28,603,157),
(28,601,107);
答案 0 :(得分:1)
这是你的结果集:
------------------------------
id config_id q_id ans_id
------------------------------
1 5 603 156
2 5 602 152
3 6 610 169
4 6 603 156
5 6 602 152
此结果集中的任何三行都将满足您当前的条件。所以ORDER BY id RAND() LIMIT 3
是一个有效的答案 - 除非我(和其他人)怀疑,你没有正确地阐述问题。
答案 1 :(得分:0)
根据您的关注,它将对您有用
SELECT max(id)as id,config_id,q_id,ans_id
FROM config_options a
WHERE (a.q_id=602 and a.ans_id=152) OR
(a.q_id=610 and a.ans_id=169) OR
(a.q_id=603 and a.ans_id=156)
group by ans_id
ORDER BY id asc