$sql = "SELECT user2 FROM subscriptions WHERE user1 = '$username'";
这段代码完美无缺,但我想做的是从我的用户表中删除一行列,即user_id列。现在我无法做到这一点......
$sql = "SELECT user2 FROM subscriptions WHERE user1 = '$username' ORDER BY user_id";
因为我的订阅表中没有名为user_id的列,所以只在我的users表中。
答案 0 :(得分:1)
您需要JOIN
表格。
SELECT subscriptions.user2
FROM subscriptions
LEFT JOIN users ON subscriptions.user2 = users.user_id
WHERE subscriptions.user1 = '$username' ORDER BY users.user_id
答案 1 :(得分:0)
您应该使用JOIN
syntax,然后可以从user_id
表格users
订购。
答案 2 :(得分:0)
您可以在ORDER BY子句中选择user_id:
SELECT user2
FROM subscriptions
WHERE user1 = '$username'
ORDER BY (select user_id from users where users.username = subscriptions.user2);
我猜测users.username是唯一的,因此您的users表中有两个自然唯一键(user_id和username)。您已决定在其他表中使用用户名作为参考。没关系。
但是,如果users.username不是唯一的,那么您的数据库设计就会被破坏,当然,您应该使用user_id作为其他表中的引用而不是用户名。
答案 3 :(得分:0)
如果您有一对一的数据关系,请使用常规连接(不是LEFT JOIN)。
SELECT a.user2 FROM subscriptions a, user b
WHERE a.user2 = b.username
AND a.usera.user1 = '$username' ORDER BY b.user_id
如果不查看表格方案,很难提供有效的解决方案。但是从查询来看,如果您使用' $ username'搜索订阅而不是用户表。
使用良好的数据库设计,您的查询应如下所示:
SELECT a.fiel1, a.field2, a.user_id, b.field1, b.field2, b.user_id
FROM subscriptions a, user b
WHERE a.user_id = b.user_id
AND b.username = '$username' ORDER BY b.user_id
答案 4 :(得分:-2)
你应该使用order by user_id desc