我正在尝试列出来自伦敦并且从我的表中拥有NORMAL或GOLD会员类型的用户。
users table
====================
id name city_id user_type
1 Helen 2 NA
2 James 1 PREMIUM
3 David 1 NORMAL
cities table
=============
id name
1 London
2 New York
$londonUsers = $db->get_rows("
SELECT * FROM users
WHERE user_type = ('NORMAL','PREMIUM')
JOIN cities ON cities.id = users.city_id
WHERE name = 'London'
");
答案 0 :(得分:4)
SELECT,FROM,JOIN,WHERE,GROUP BY,HAVING,ORDER BY。
使用" AND"或"或"在where子句或连接中组合多个条件时 你不能使用user_Type =两件事。你必须使用IN(此列表)或创建单独的条件。比如
WHERE (user_type = 'NORMAL' or user_type = 'PREMIUM') and name = 'London'
SELECT *
FROM users u
JOIN cities c
ON c.id = u.city_id
WHERE c.name = 'London'
and u.user_type in ('NORMAL','PREMIUM')
答案 1 :(得分:1)
您只能在FROM / JOIN语句之后放置WHERE子句。如果您需要多个WHERE
语句,可以将它们与AND
一起添加(WHERE
语句中的条款结果应为TRUE
或FALSE
因此,您可以使用AND
和OR
)组合语句。
以下是您在示例中的操作方法:
SELECT *
FROM users
JOIN cities ON cities.id = users.city_id
WHERE user_type IN ('NORMAL','PREMIUM')
AND cities.name = 'London'
这将首先为您提供这样的联接表:
join table result
====================
users.id users.name users.city_id users.user_type cities.id cities.name
1 Helen 2 NA 2 New York
2 James 1 PREMIUM 1 London
3 David 1 NORMAL 1 London
然后过滤掉只显示符合WHERE语句的那些语句,即user_type NORMAL或PREMIUM和伦敦城市。