选择mysql返回0行

Ale*_* Ho -2 mysql sql select

我有如下查询:

SELECT 
  lp - prev_close_price AS ch,
  (lp - prev_close_price) / prev_close_price AS chp,
  short_name,
  exchange,
  description,
  lp,
  IFNULL(ask, 0) AS ask,
  IFNULL(bid, 0) AS bid,
  IFNULL(ask - bid, 0) AS spread,
  IFNULL(open_price, prev_close_price) AS open_price,
  IFNULL(high_price, prev_close_price) AS high_price,
  IFNULL(low_price, prev_close_price) AS low_price,
  prev_close_price,
  volume
FROM
  metaTQEjY,
  lpTQEjY,
  askTQEjY,
  bidTQEjY,
  open_todayTQEjY,
  highlowTQEjY,
  prevcloseTQEjY;
Run Code Online (Sandbox Code Playgroud)

它返回0行,而所有表肯定都有值.

然后我试了这个

SELECT 
  prevcloseTQEjY.prev_close_price
FROM
  metaTQEjY,
  lpTQEjY,
  askTQEjY,
  bidTQEjY,
  open_todayTQEjY,
  highlowTQEjY,
  prevcloseTQEjY;
Run Code Online (Sandbox Code Playgroud)

仍然是0行.但

SELECT 
  prevcloseTQEjY.prev_close_price
FROM
  prevcloseTQEjY;
Run Code Online (Sandbox Code Playgroud)

正确返回prev_close_price.为什么会这样?

Rad*_*ača 7

您正在执行这些表的笛卡尔积.如果其中一个为空,则会得到一个空集.