我想显示禁止的用户和IP,但它们位于两个不同的表中。 我有网站用户的表,该表包含列'禁止'和另一个禁止IP的表。所以我想要这样的东西:
选择
ipban.ip,ipban.admin,ipban.reason
和
users.username WHERE ban = 1
(这个查询不正确,我写的只是为了解释我的问题)
然后在表格中显示。 那么,怎么做呢?
答案 0 :(得分:3)
使用UNION,如下所示:
(SELECT NULL, ipban.ip, ipban.admin, ipban.reason FROM ipban)
UNION ALL
(SELECT users.username,NULL,NULL,NULL FROM users WHERE ban=1)
我假设这两个表没有要加入的公共字段。
答案 1 :(得分:2)
SELECT ipban.ip, ipban.admin, ipban.reason, users.username FROM ip, users WHERE users.somekey = ipban.somekey and users.ban = 1
假设ban
在users
表中。
您也可以使用INNER JOIN连接表格:
SELECT ipban.ip, ipban.admin, ipban.reason, users.username FROM users INNER JOIN ip ON users.somekey = ip.somekey WHERE users.ban = 1
要从两个表中获取所有列,请使用
SELECT * FROM users INNER JOIN ip ON users.somekey = ip.somekey WHERE users.ban = 1
答案 2 :(得分:0)
选择 ipban.ip,ipban.admin,ipban.reason,users.username 从 ipban Inner加入用户 在公共属性上(这里你应该提供一个列在两个表中) ban = 1;