问题
I just try following query:
SELECT *,
(
SELECT count(*)
FROM users
where users.email=calls.email
) as ureg,
(
SELECT sum(qty)
FROM product
where product.owner in
(SELECT *
from users
where users.email=calls.email)
) as pop
FROM calls
order by calls.data desc
LIMIT 0,20
but I get following error :
#1241 - Operand should contain 1 column(s)
How should I fix my query?
Edit:
by changing
SELECT * from users where users.email=calls.email
to
SELECT id from users where users.email=calls.email
it works because the query searches for product.owner in bunch of id
s that exist in users
回答1:
where product.owner in (SELECT *
product.owner
is one column, so the subquery should return one column (whatever corresponds to product.owner
).
回答2:
try this
SELECT calls.*, count(users.*) as ureg, sum(twons.qty) as pop
FROM calls
INNER JOIN users ON users.email=calls.email
INNER JOIN towns ON towns.id = users.town
^^^^^^^^^^^^^^^^^^^^^^^^^^--you have to correct this to your table column names
order by data desc
LIMIT 0,20
- you have to correct this
ON towns.id = users.town
to your tables names
来源:https://stackoverflow.com/questions/16945867/error-1241-operand-should-contain-1-columns-in-mysql