0

从这样的表(这只是在这里):

p_add  | p_add_s | p_phone | p_phone_s | p_user_id //0 = show 1= Hide
Address| 0       | 12345   | 1         | 1
Addr   | 0       | 12345   | 1         | 2

我该如何选择:

 select p_add (if p_add_s = 0), p_phone (if p_phone_s=0) from table where p_user_id=1
or
    select p_add, p_phone from table where p_user_id=1 (if p_add_s = 0) and (if p_phone_s = 0)

这些是不正确的。我把它们包括在内只是为了让你有一个想法。

实际上,如果 _s 的值为 0,我只需要数据。

这可以使用sql完成还是必须使用php来完成?

4

3 回答 3

1

我认为您正在寻找 mysql IF 语法:

select if(p_add_s=0, p_add, 'Address Private'),  if(p_phone_s=0, p_phone, 'Phone Private') from myTable

如果满足条件,则返回中间部分,否则返回最后一个。

或者,根据您的第二个查询:

select p_add, p_phone from table where p_user_id=1 and p_add_s = 0 and p_phone_s = 0

请注意,这不会返回where 子句中的所有条件都不满足的行,因此 if 语句可能会更好。

于 2012-08-27T09:37:06.130 回答
0
select p_add, p_phone from table where p_user_id=1 and p_add_s=0 and p_phone_s=0
于 2012-08-27T09:36:01.367 回答
0
SELECT p_add FROM yourtable
WHERE p_user_id = 1
AND p_add_s = 0
AND p_phone_s = 0

不要忘记使用PDO

于 2012-08-27T09:37:32.537 回答