我正在尝试这样做,以便找到具有特定邮政编码的人,但在用户表格下按ASC顺序列出全名...
SELECT profiles.id
FROM `profiles`,`users`
WHERE profiles.zipcode = '$ZIPCODE'
ORDER BY users.full_name ASC
就像显示双打一样。
答案 0 :(得分:2)
我认为您需要加入,尝试类似
SELECT Users.full_name
FROM Users
INNER JOIN profiles
ON profiles.user_id = users.id
WHERE profiles.zipcode = '$ZIPCODE'
ORDER BY users.full_name ASC
我假设配置文件表中有用户的外键?答案假设配置文件表中的user_id的外键
编辑:
外键是属于另一个表的键。因此,如果您有一个用户和一个配置文件表,那么您很可能在配置文件表中有一个列,每个配置文件都会引用一个唯一的用户(假设用户每个只有一个配置文件)
答案 1 :(得分:0)
如果您只想显示不同的ID,那么这将有效(根据您的SQL方言,您也可以选择不同的profiles.id并跳过group by语句。)
SELECT profiles.id
FROM (select * from `profiles`,`users`
WHERE profiles.zipcode = '$ZIPCODE'
ORDER BY users.full_name
)subquery
GROUP BY profiles.id;
答案 2 :(得分:0)
在您的查询中,您正在执行此操作:
FROM `profiles`,`users`
并且没有提供相对于这些表的关系的JOIN
或WHERE
条件。这导致了笛卡尔积。你很幸运,你只会得到双打;结果很容易变大。