从这样的表格(这只是为了这里):
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实现?
答案 0 :(得分: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
请注意,这不会返回 all 中不满足where子句内条件的行,因此if语句可能会更好。
答案 1 :(得分:0)
select p_add, p_phone from table where p_user_id=1 and p_add_s=0 and p_phone_s=0
答案 2 :(得分:0)
SELECT p_add FROM yourtable
WHERE p_user_id = 1
AND p_add_s = 0
AND p_phone_s = 0
不要忘记使用PDO。