这就是我所拥有的(这是不同条件下来自不同表格的选择查询的结果,让我们称之为选择X):
ID c2 c3 c4
1 A de ys
2 A rq pm
3 B rq qs
我想要一个只能在c2中给出一个具有特定值的行的查询,例如:
ID c2 c3 c4
1 A de ys
3 B rq qs
或
ID c2 c3 c4
2 A rq pm
3 B rq qs
我知道如何使用数据结构,但它更复杂,我想知道是否有办法使用查询?
编辑:这是我尝试的,它给出了错误:" From子句中的语法错误"
(如果重要X = SELECT Responses.ID,Responses.PostID,Responses.Responding,Posts.ID,Posts.UserID,Users.ID,Users.Username FROM Responses,Posts,Users WHERE Responses.PostID =3 and Posts.ID = Responses.PostID AND Responses.Responding = Users.ID
)
SELECT(Select X).*
FROM (Select X) as (Select X)
JOIN (
SELECT MIN(ID) AS ID, Users.ID
FROM (Select X)
GROUP BY Users.ID
) AS t2 ON (Select X).ID = t2.ID
编辑:好吧,我将这个开放,但最后我选择的数据结构方式不是查询方式。
答案 0 :(得分:1)
这样的事情:
SELECT t1.*
FROM mytable as t1
JOIN (
SELECT MIN(ID) AS ID, c2
FROM mytable
GROUP BY c2
) AS t2 ON t1.ID = t2.ID
这将选择具有相同ID
值组中的最小c2
值的行。您可以使用MAX
聚合函数来获取第二个结果集。
注意:我假设ID
是你桌子的PK。
修改强>
您可以使用SELECT
查询中的派生表,如下所示:
SELECT t1.*
FROM (SELECT X ...) as t1
JOIN (
SELECT MIN(ID) AS ID, c2
FROM (SELECT X ...) AS t
GROUP BY c2
) AS t2 ON t1.ID = t2.ID